我有一个包含在宽格式的问卷调查数据的数据帧。但一列包含压缩在长格式CSV格式的数据(作为字符串)的实验数据。所以我想改变这种压缩和还原完整的表格数据集。从宽幅值应重复填写添加的行。
因此,这将是我的数据框:
df_wide <- data.frame(v1 = c("1", "2", "3"),
v2 = c("sender, correct, \n1, y, \n2, y,",
"sender, correct, \n2, n, \n1, n,",
"sender, correct, \n1, n, \n2, y,"))
colnames(df_wide) <- c("ID", "csvcolumn")
df_wide$csvcolumn <- as.character(df_wide$csvcolumn)
> df_wide
> ID csvcolumn
>1 1 sender, correct, \n1, y, \n2, y,
>2 2 sender, correct, \n2, n, \n1, n,
>3 3 sender, correct, \n1, n, \n2, y,
我希望它看起来是这样的:
> df_long
ID sender correct
1 1 y
1 2 y
2 2 n
2 1 n
3 1 n
3 2 y
我能够读取CSV列,并将其保存为一个新的数据帧
DF2 < - 函数read.table(文本= df_wide $ csvcolumn,九月= “”,首标= TRUE,allowEscapes = TRUE)
但显然,这并不包括在宽格式的数据,我不知道哪个数据属于哪个ID。
我希望这是某种能够解决,我对你的帮助表示感谢。
我怀疑这里使用的输入。在Excel中可能细化到输入的是更有意义R.并不总是可能的。然而...
要清理干净,先删除每qazxsw POI上qazxsw POI字符不需要的头,和分裂(需要qazxsw POI!)
csvcolumn
然后用类似于您\n
把戏,但tidyverse
library(tidyverse)
df_n <- df_wide %>% dplyr::mutate(n = gsub("sender, correct, \n",
"",
csvcolumn)) %>%
dplyr::select(1,3) %>%
tidyr::separate(data=.,
col="n",
sep="\n",
into=c("s1","c1"))
然后,你可以通过read.csv
的长度划分总行打电话read_csv
,让您的问卷调查数据,然后df_list <- lapply(df_n, function(f){
read_csv(as.vector(f), col_names=F)
})
rbind