我有一个这样的文本数据文件(相应的类别[A,B,C]具有多行):
A=1,2,3,6,
7,9
10
B=3,4,5
C=5,7,8,10,11,
13,14
当我加载到R时,它将变成一个6磅的数据帧。和1个变量
df <- read.delim("file.text",header = FALSE)
v1
1 A=1,2,3,6,
2 7,9
3 10
4 B=3,4,5
5 C=5,7,8,10,11,
6 13,14
如何更改为这种格式?
A B C
1 A
2 A
3 A B
4 B
5 B C
6 A
7 A C
8 C
9 A
10 A C
11 C
13 C
14 C
谢谢!
[基本方法是以字符串形式读取数据,在=
和,
上分开,然后找出识别每个数字所属的组的最佳方法。
在以下方法中,我故意使用类型转换来创建组。由于这将涉及从字符到数字的强制转换,因为拆分值中包含字符,所以会出现几条警告消息。
library(data.table)
x <- fread(file = "~/path/to/your/file.txt", sep = "\n", header = FALSE)
x[, unlist(strsplit(V1, "=|,"), use.names = FALSE, recursive = FALSE), .I][
, list(ind = as.integer(V1), col = rep(V1[1], .N)), cumsum(is.na(as.integer(V1)))][
, dcast(na.omit(.SD), ind ~ col, value.var = "col", fill = "")]
# ind A B C
# 1: 1 A
# 2: 2 A
# 3: 3 A B
# 4: 4 B
# 5: 5 B C
# 6: 6 A
# 7: 7 A C
# 8: 8 C
# 9: 9 A
# 10: 10 A C
# 11: 11 C
# 12: 13 C
# 13: 14 C