我不确定这是否有资格作为转动,这就是为什么我认为我会问小组。我不确定如何从输入到下面的输出数据帧。我用逗号分隔它们,因为我找不到创建表的方法。
输入:
标题:key1,key2,key3,type,value
值:
a1, b1, c1, fruit, 1
a1, b1, c1, vegetable, 3
a2, b2, c2, fruit, 7
a2, b2, c2, vegetable, 11
a2, b2, c2, nut, 13
输出:
标题:key1,key2,key3,水果,蔬菜,坚果
值:
a1, b1, c1, 1, 3,
a2, b2, c2, 7, 11, 13
也就是说,我希望认识到“类型”列有不同的选择(水果,蔬菜,坚果)并为每个选项创建一个列并将值放入其中。由于a1,b1,c1没有螺母值,我将其留空。
它真的还在转动还是有另一种方法可以做到这一点?非常感谢你!
答案 0 :(得分:0)
意识到它比当时看起来更容易。 dcast(myDataFrame,key1 + key2 + key3~type,value.var =" value")就可以了。
答案 1 :(得分:0)
tidyr
:spread(type, value)
可以快速轻松地将您的画面从长格式转换为宽格式。
[与您的'farmstand'数据框dput()
- 编辑。]
> dput(farmstand)
structure(list(key1 = c("a1", "a1", "a2", "a2", "a2"), key2 = c("b1",
"b1", "b2", "b2", "b2"), key3 = c("c1", "c1", "c2", "c2", "c2"
), type = c("fruit", "vegetable", "fruit", "vegetable", "nut"
), value = c(1, 3, 7, 11, 13)), .Names = c("key1", "key2", "key3",
"type", "value"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-5L))
> farmstand %>% spread(type, value)
# A tibble: 2 × 6
key1 key2 key3 fruit nut vegetable
* <chr> <chr> <chr> <dbl> <dbl> <dbl>
1 a1 b1 c1 1 NA 3
2 a2 b2 c2 7 13 11
请参阅此处了解更多酷炫,快速且简单的数据争吵技巧:data-wrangling-cheatsheet