首页 > 解决方案 > 在R中将文本文件转换为数据框

问题描述

我正在尝试在 R 中转换文本文件数据。数据集看起来像这样

RXID- 3233
OWN - NLM
AU  - HBGHB
AB  - good boy. 

RXID- 3234
OWN - NLM
AU  - HBGJI
AB  - bad boy. 

我提到将多行文本转换为数据框,我这样做了

x<-read.delim("Test.txt", header = FALSE, sep = "-", strip.white = TRUE) #this is working well
cols<-levels(x[,'V1'])  #This is giving a null value 

我无法找出为什么这是 NULL

最终输出应如下所示

RXID   OWN   AU    AB
3233   NLM   HBGHB   good boy
3234   NLM   HBGJI   bad boy

标签: rdataframe

解决方案


我猜你正在使用 R 4.0.0?

如果您将“stringsAsFactors=TRUE”添加到您的 read.delim 命令,它应该可以工作。

x <- read.delim("Test.txt", header = FALSE, sep = "-", strip.white = TRUE,
                 stringsAsFactors=TRUE)

cols <- levels(x[,'V1']); cols
[1] "AB"   "AU"   "OWN"  "RXID"

d <- data.frame(sapply(cols, function(y) {x['V2'][x['V1']==y]}, USE.NAMES=TRUE))
d
        AB    AU OWN RXID
1 good boy HBGHB NLM 3233
2  bad boy HBGJI NLM 3234

您复制的代码是 10 年前编写的,当时 stringsAsFactors 的默认值为 TRUE。在当前版本的 R (4.0.0) 中,默认值已更改为 FALSE,因此任何看起来像字符的内容都将保留为字符(除非您在命令中手动将值更改为 TRUE 以读取数据)。


推荐阅读