R中的逻辑顺序在数据框中创建列并用信息填充它
Logical order in R to create column in data frame and fill it with information
我有一个 df,其中包含以下列(带有超级人口 ID)。它的别名是 Superpop:
EUR
EUR
EUR
AMR
AMR
AFR
AMR
AFR
EUR
SAS
EUR
...
并且我需要(稍后使用 scatterplot3d)构建另一个列,假设名为“pcolors”的列,它必须具有颜色名称来识别超级总体,以便为图中的点着色。我想要这个作为输出:
EUR red
EUR red
EUR red
AMR blue
AMR blue
AFR green
AMR blue
AFR green
EUR red
SAS yellow
EUR red
... ...
问题是它们没有排序,而且 df 有 2524 行长,所以我不能手动完成,而且由于其他列的顺序,我不想对它进行排序。有没有一种方法,例如,用一个逻辑函数来表示“生成另一列,并且,如果在那一行 Superpop==EUR,然后在 pcolor 列的那一行写下”红色“...”等等我有 5 个超级种群?有什么想法吗?谢谢!
只需使用下标。您可以像这样创建一个命名的颜色向量:
pcolor <- c(EUR = "red", AMR = "blue", AFR = "green", SAS = "yellow")
那么如果
df <- data.frame(Superpop = c("EUR","EUR","EUR","AMR","AMR","AFR","AMR","AFR","EUR","SAS","EUR"))
如果你这样做
df$color = pcolor[as.character(df$Superpop)]
那么df
就是:
Superpop color
1 EUR red
2 EUR red
3 EUR red
4 AMR blue
5 AMR blue
6 AFR green
7 AMR blue
8 AFR green
9 EUR red
10 SAS yellow
11 EUR red
这很简单:
pcolors <- unsplit(superpop, value = colors())
您可以在值参数中选择您想要的颜色。
我有一个 df,其中包含以下列(带有超级人口 ID)。它的别名是 Superpop:
EUR
EUR
EUR
AMR
AMR
AFR
AMR
AFR
EUR
SAS
EUR
...
并且我需要(稍后使用 scatterplot3d)构建另一个列,假设名为“pcolors”的列,它必须具有颜色名称来识别超级总体,以便为图中的点着色。我想要这个作为输出:
EUR red
EUR red
EUR red
AMR blue
AMR blue
AFR green
AMR blue
AFR green
EUR red
SAS yellow
EUR red
... ...
问题是它们没有排序,而且 df 有 2524 行长,所以我不能手动完成,而且由于其他列的顺序,我不想对它进行排序。有没有一种方法,例如,用一个逻辑函数来表示“生成另一列,并且,如果在那一行 Superpop==EUR,然后在 pcolor 列的那一行写下”红色“...”等等我有 5 个超级种群?有什么想法吗?谢谢!
只需使用下标。您可以像这样创建一个命名的颜色向量:
pcolor <- c(EUR = "red", AMR = "blue", AFR = "green", SAS = "yellow")
那么如果
df <- data.frame(Superpop = c("EUR","EUR","EUR","AMR","AMR","AFR","AMR","AFR","EUR","SAS","EUR"))
如果你这样做
df$color = pcolor[as.character(df$Superpop)]
那么df
就是:
Superpop color
1 EUR red
2 EUR red
3 EUR red
4 AMR blue
5 AMR blue
6 AFR green
7 AMR blue
8 AFR green
9 EUR red
10 SAS yellow
11 EUR red
这很简单:
pcolors <- unsplit(superpop, value = colors())
您可以在值参数中选择您想要的颜色。