【发布时间】:2016-01-25 20:28:34
【问题描述】:
我有以下数据:
df <- data.frame(left=letters[1:4], right=replicate(1,sample(0:100,12,rep=TRUE)))
我看起来像这样(数字可能不同,因为在随机函数上)
left right
1 a 6
2 b 97
3 c 78
4 d 28
5 a 61
6 b 58
7 c 56
8 d 28
9 a 90
10 b 83
11 c 72
12 d 17
第一列是表格的标题,重复 3 次。新的数据框应如下所示:
a b c d
6 97 78 28
61 58 56 28
90 83 72 17
当我使用时
spread(df,left, right)
看起来像这样:
a b c d
1 6 NA NA NA
2 NA 97 NA NA
3 NA NA 78 NA
4 NA NA NA 28
5 61 NA NA NA
6 NA 58 NA NA
7 NA NA 56 NA
8 NA NA NA 28
9 90 NA NA NA
10 NA 83 NA NA
11 NA NA 72 NA
12 NA NA NA 17
有什么想法吗?
【问题讨论】:
-
也许这会起作用:
data.frame(a = df[which(df$left == 'a'),2], b = df[which(df$left == 'b'),2], c = df[which(df$left == 'c'),2], d = df[which(df$left == 'd'), 2]) -
我看到我们不再标记重复项了
-
@Alex 没能很快找到一个好的;如果你有一个好的:投票关闭为重复,我会立即将其标记为重复
-
unstack(df, form = right ~ left)是经典的从长到宽的骗局。这是最后一个答案 -
@PierreLafortune 你是对的;现在标记为重复