将.txt文件读入R,未知分隔符,没有列

3

我有一个大的数据集,存储在一个 .txt 文件中,它没有列,只有行。不幸的是,这些行按照案例进行了聚类。它看起来像这样:

v1(case1): a   
v2(case1): b
v3(case1): c

v1(case2): d
v2(case2): e
v3(case2): f

…等等。我尝试使用read.table命令将变量名与数据分开,使用以下命令:

data1 <- read.table("Data.txt", header = FALSE, sep = ":", fill=TRUE)

...但它并不完全有效(即,在某些情况下,它将变量名放置在“v1”列中,而在某些情况下则没有),导致了这种情况:

V1            V2
1   v1case1   a
2   v2case1   b 
3   v3case1   c
4   v1case2   d
5   v2case2   e
6   v3case2   f
7            v1case3
8            v2case3
9            v3case3

有没有更好的方式可以将所有变量名称提取到单独的列中(以便我可以使用它们创建新变量,并使用“if / else”将每个变量的相关数据提取到一列中),或者有没有其他方法可以将此数据集放入行/列格式中?任何建议都非常感谢。
2个回答

2

stringrplyr可以帮助你,如果你从readLines()开始:

library(stringr)
library(plyr)

dat <- readLines("rows.txt")
print(dat)
## [1] "v1(case1): a" "v2(case1): b" "v3(case1): c" "v1(case2): d" "v2(case2): e" "v3(case2): f"

x <- ldply(str_match_all(dat, "^([[:alnum:]]+)\\(([[:alnum:]]+)\\):\ +([[:alnum:]]+)"))[,2:4]
print(x)
##    2     3 4
## 1 v1 case1 a
## 2 v2 case1 b
## 3 v3 case1 c
## 4 v1 case2 d
## 5 v2 case2 e
## 6 v3 case2 f

我不完全确定你需要的结果数据框的样子,但是reshapereshape2可以帮助你完成其余部分。


0

仅使用基本的R语言:

dat = as.data.frame(scan('Data.txt', sep = ':', 
                    what = list(case = character(), value = character()), 
                    strip.white = TRUE, blank.lines.skip = TRUE))

选项 blank.lines.skip 可解决空行问题。如果需要,您可以使用 @hrbrmstr 的建议进一步处理案例名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接