我的数据集中的列相当凌乱。
它是一个名为Themes
的列,位于不同项目的数据集中。
共有10个不同的主题,所有主题都以随机顺序混乱 图像:My messy column
我要做的是,为每个主题创建一个列,其中0(=项目不包含主题)或1(=项目确实包含主题),是否为特定项目/ row包含主题。
FX。请参阅图片:My wished output
我试图做的是单独使用:
Themes_split <- Merge %>%
separate(Themes, into = c("CP", "CG",
"Edu", "Health", "Nut", "Ill", "Liv", "Hum",
"Cross-Thematic", "Non-Thematic"), sep = ",",
na.rm=TRUE)
但是这个输出无法识别列中列出主题的随机顺序,请参阅输出图像:My actual output
如何让R识别不同的主题,并在特定项目包含不同主题时为新列指定值0或1?
我期待着一些帮助 - 谢谢
答案 0 :(得分:0)
您尚未向我们提供themes
数据。但是,请查看tidyr::separate_rows
帮助示例。您可以根据您的示例进行调整:
df <- data.frame(
x = 1:3,
y = c("a", "d,e,f", "g,h"),
z = c("1", "2,3,4", "5,6"),
stringsAsFactors = FALSE
)
> df
x y z
1 1 a 1
2 2 d,e,f 2,3,4
3 3 g,h 5,6
separate_rows(df, y, z, convert = TRUE)
x y z
1 1 a 1
2 2 d 2
3 2 e 3
4 2 f 4
5 3 g 5
6 3 h 6
您可以通过进一步传播数据来修改它:
separate_rows(df, y, z, convert = TRUE) %>% spread(y, z, fill= 0)
x a d e f g h
1 1 1 0 0 0 0 0
2 2 0 2 3 4 0 0
3 3 0 0 0 0 5 6