分隔包含值

时间:2016-01-17 00:23:29

标签: r split dataframe

所以我需要分离超过500,000个不同行的庞大数据集。每行都是一组数字,例如:

P040120000000000000000001001101210000000120000000000

这里要注意的重要事项是" P04012"对应于一个特定表的部分。数十万项下来,代码转换成:

P051120150000000000000002158101110000000210000184380

使用" P05112015"意思不同的东西。每个数字串的前8-10个字符对应于某个表,但截至目前,它们都被归为一个包含一列和500,000行的巨大数据集。如何根据数字将行分成特定的表?

我计划使用read.fwf将数字字符串拆分成列,所以在这一点上,它只是想弄清楚如何将它们拆分成表格。

2 个答案:

答案 0 :(得分:2)

以下是一种可能对您有用的可能性read.fwf()

options(stringsAsFactors = F)

# fake data file
tf <- tempfile()
x <- cat(
  "P040120000000000000000001001101210000000120000000000",
  "P051120150000000000000002158101110000000210000184380",
  sep = "\n",
  file = tf)

# get table identifiers using read.fwf()
ids <- read.fwf(tf, widths = c(10, 42))

# drop trailing zeros (not sure if this is important)
ids <- gsub("0+$", "", ids$V1)

答案 1 :(得分:1)

根据您的问题和我能理解的内容,您的数据如下: 在CSV文件中说:

 RowID,Name
 P040120000000000000000001001101210000000120000000000,A
 P040130000000000000000001001101210000000120000000000,B
 P040140000000000000000001001101210000000120000000000,C
 P040150000000000000000001001101210000000120000000000,D

您想要根据前几位创建一个表,下面是我的R代码:

rm(list = ls())
FF = read.csv('/home/my/k.csv', header = TRUE);
S=substr(FF$RowID, 1, 6)
T1 <- table(S[1],as.character(FF$Name[1]))
T2 <- table(S[2],as.character(FF$Name[2]))
T3 <- table(S[3],as.character(FF$Name[3]))
T4 <- table(S[4],as.character(FF$Name[4]))
T1;T2;T3;T4;

如果您有很多行字段,可以使用for loop创建表格。  希望我回答你的问题。