在 R 中操作数据框
Manipulate a data frame in R
我有一个 table 看起来像这样:
id pop fre
A:1 sh 0.6
A:1 mi 0.2
A:2 sh 0.9
A:3 mi 0.5
我想要的是创建一个新的 table,其中第二列 (pop) 作为列名和 (id) 列的值而不重复。 (fre) 列的相应值将用于填充 table。例如上面的 table 可能看起来像这样:
id sh mi
A:1 0.6 0.2
A:2 0.9 NA
A:3 NA 0.5
我尝试在 R 中使用 reshape 函数,但是我一直收到有关数据框列的错误。我感谢任何可能有帮助的想法。
你可以试试dcast
library(reshape2)
dcast(df1, id~pop, value.var='fre')
或者
library(tidyr)
spread(df1, pop, fre)
或使用 base R
(基于显示的示例)
xtabs(fre~id+pop, df1)
或 reshape
来自 base R
reshape(df1, idvar='id', timevar='pop', direction='wide')
数据
df1 <- structure(list(id = c("A:1", "A:1", "A:2", "A:3"), pop = c("sh",
"mi", "sh", "mi"), fre = c(0.6, 0.2, 0.9, 0.5)), .Names = c("id",
"pop", "fre"), class = "data.frame", row.names = c(NA, -4L))
df1$pop <- factor(df1$pop, levels=unique(df1$pop))
我有一个 table 看起来像这样:
id pop fre
A:1 sh 0.6
A:1 mi 0.2
A:2 sh 0.9
A:3 mi 0.5
我想要的是创建一个新的 table,其中第二列 (pop) 作为列名和 (id) 列的值而不重复。 (fre) 列的相应值将用于填充 table。例如上面的 table 可能看起来像这样:
id sh mi
A:1 0.6 0.2
A:2 0.9 NA
A:3 NA 0.5
我尝试在 R 中使用 reshape 函数,但是我一直收到有关数据框列的错误。我感谢任何可能有帮助的想法。
你可以试试dcast
library(reshape2)
dcast(df1, id~pop, value.var='fre')
或者
library(tidyr)
spread(df1, pop, fre)
或使用 base R
(基于显示的示例)
xtabs(fre~id+pop, df1)
或 reshape
来自 base R
reshape(df1, idvar='id', timevar='pop', direction='wide')
数据
df1 <- structure(list(id = c("A:1", "A:1", "A:2", "A:3"), pop = c("sh",
"mi", "sh", "mi"), fre = c(0.6, 0.2, 0.9, 0.5)), .Names = c("id",
"pop", "fre"), class = "data.frame", row.names = c(NA, -4L))
df1$pop <- factor(df1$pop, levels=unique(df1$pop))