将行转换为R中数据帧的列

时间:2016-05-22 06:11:57

标签: r dataframe reshape

我有这样的数据集

movieID    title   year   country    genre  directorName    Rating     actorName1     actorName.2
1          hello    1995    USA      action    john smith       6        tom hanks      charlie sheen
2          MI2      1997    USA      action    mad max          8        tom cruize     some_body
3          MI2      1997    USA      thriller  mad max          8        tom cruize     some_body

基本上有很多行只有一个不同的用户给定类型我想要有genre1,genre2,...的列

我尝试了reshape()但它只会根据一些ID变量进行转换。如果有人有任何想法让我知道

1 个答案:

答案 0 :(得分:1)

尝试使用dplyr和tidyr:

library(tidyr)
library(dplyr)
df %>% mutate(yesno=1) %>% spread(genre, yesno, fill=0)

这会创建一个yesno列,只为每个类型提供一个值来填充。然后我们可以使用tidyr的传播。 fill = 0表示用0而不是NA填写不在流派中的那些。

在:

     genre         title yesno
1   action lethal weapon     1
2 thriller       shining     1
3   action         taken     1
4    scifi         alien     1

后:

          title action scifi thriller
1         alien      0     1        0
2 lethal weapon      1     0        0
3       shining      0     0        1
4         taken      1     0        0