我得到了将所有调查问题答案保存到同一单元格的数据。我试图找到一种方法将数据拆分为多个列,并使用每个字符串的一部分,直到设置分隔符作为列名称。 目前的表格是这样的
身份证 | 回应 |
---|---|
1 | "性别":"女","职业":"学生","左手":"左手" |
2 | "性别":"女","职业":"记者","递手":"右" |
df <- structure(list(ID = 1:2, Response = c("gender:Female,occupation:student,handed:Left",
"gender:Female,occupation:Reporter,handed:Right")), class = "data.frame", row.names = c(NA,
-2L))
我希望它看起来像这样
身份证 | 性别 | 职业 | 双手 |
---|---|---|---|
1 | “女” | “学生” | “左” |
2 | “女” | “记者” | “对” |
我已经成功地将问题和回答分成一栏
df<- df%>%
mutate(NUM = row_number()) #row number is used as a key for merge
dfdelimted<-
str_split_fixed(df$response, ',"', 50)
dfdelimted<-data.frame(dfdelimted)
dfdelimted<- dfdelimted%>%
mutate(NUM = row_number()) #row number is used as a key for merge
df <- merge(df,dfdelimted, by="NUM")
哪个输出:
身份证 | v1 | v2 | v3 |
---|---|---|---|
1 | “性别”:“女” | “职业”:“学生” | “左手”:“左” |
2 | “性别”:“女” | “职业”:“记者” | “递”:“右手” |
我似乎不知道如何用谷歌搜索来表达这个,所以任何帮助都会很棒!
separate_longer_delim()
方法的演示。基本上我们正在做的是:
library("tidyverse")
df |>
separate_longer_delim(Response, delim = ",") |>
separate_wider_delim(Response, delim = ":", names = c("name", "value")) |>
pivot_wider()