我什至不知道如何正确地命名问题!
假设我有一个数据框 d:
当前数据框:
d <- data.frame(sample = LETTERS[1:2], cat = letters[11:20], count = c(1:10))
sample cat count
1 A k 1
2 B l 2
3 A m 3
4 B n 4
5 A o 5
6 B p 6
7 A q 7
8 B r 8
9 A s 9
10 B t 10
我正在尝试重新排列事物,使每个 cat 值成为自己的一列,sample 保留为一列(或成为行名称),并且 count 将是新 cat 列中的值,其中 0样本中没有猫的数量。就像这样:
所需的数据框布局:
sample k l m n o p q r s t
1 A 1 0 3 0 5 0 7 0 9 0
2 B 0 2 0 4 0 6 0 8 0 10
解决这个问题的最佳方法是什么?
据我所知,这是:
for (i in unique(d$sample)) {
s <- d[d$sample==i,]
st <- as.data.frame(t(s[,3]))
colnames(st) <- s$cat
rownames(st) <- i
}
即循环遍历原始数据框中的样本,并对每个样本子集进行转置。所以在这种情况下我得到
k m o q s
A 1 3 5 7 9
and
l n p r t
B 2 4 6 8 10
这就是我陷入困境的地方。我尝试过很多事情merge
, bind
, apply
,...但我似乎找不到正确的东西。另外,我忍不住想知道上面的循环是否是一个必要的步骤 - 与unstack
也许?
不用说,我是 R 新手......如果有人可以帮助我,我将不胜感激!
PS 我尝试重新排列数据框的原因是希望使值的绘制更容易(即我想以表格格式在图中显示实际的 df )。
谢谢你!