如何从数据帧提取CSV柱,并用现有的数据帧结合起来

问题描述 投票:2回答:1

我有一个包含在宽格式的问卷调查数据的数据帧。但一列包含压缩在长格式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。

我希望这是某种能够解决,我对你的帮助表示感谢。

r csv read.table read.csv
1个回答
0
投票

我怀疑这里使用的输入。在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
© www.soinside.com 2019 - 2024. All rights reserved.