R:将一列中的逗号分隔值拆分为新数据帧(或如何使用strsplit结果)

时间:2016-09-28 23:06:14

标签: r

我有一个来自两个不同小组的测试结果列表,我已经带入R,我对R的经验很少。我目前的数据框看起来像这样:

Samples <- c("A","B","C","D","E")
Test1 <- c("1","","300","NA","100, 2")
Test2 <- c("2","5000","3, 4000, 5","3","")
df <- data.frame(Samples, Test1, Test2)

我想(1)用多个逗号分隔的值将单元格分成不同的列,(2)修复测试的单位以使它们匹配 - 此处的Test1有时会在当Test2报告偏离1000倍时,缩小了100倍,并且(3)将得到的值平均回到一列。

我开始这样:

#Replace blank cells with NA
df[df==""] <- "NA"
#Split cells with commas in them
split2 <- strsplit(df$Test2, split = "\\,")

并且很快陷入困境。如何将列表创建回某种数据帧?我不知道在我的巨型数据集专栏中有多少逗号分隔的字符串。大多数行只有一个结果,但我知道有几个有两个,至少有一个有大约八个。我试图建立一个新的数据帧(下面)并不顺利。

do.call(rbind, lapply(split2))
Error in match.fun(FUN) : argument "FUN" is missing, with no default
data.frame(t(sapply(split2,c)))
  X1   X2           X3 X4 X5
1  2 5000 3,  4000,  5  3   

我确定有一些方法可以在我仍然使用列表的同时做我想要做的事情,而且几乎可以肯定某种方式使用函数/ for循环。任何建议都将不胜感激。

最后,我希望数据看起来像这样:

    Samples Test1 Test2
1       A     1     2
2       B    NA     5
3       C     3     4
4       D    NA     3
5       E   1.5    NA

1 个答案:

答案 0 :(得分:0)

我在这种情况下执行以下操作:我创建数据并像您一样计算 var frm = Application.OpenForms.Cast<Form>().Where(x => x.Name == "Form1").FirstOrDefault(); if (null != frm) { frm.Hide(); } (除了我在创建data.frame时使用split2。)然后继续这样:

stringsAsFactors=FALSE