r - 在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
解决方案
我猜你正在使用 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 以读取数据)。
推荐阅读
- amazon-web-services - 使用两个副本设置 rabbitmq 部署
- sql - 对某些数据库名称的 SQL 查询
- security - getDeviceId:用户 10214 不符合获取设备标识符的要求
- linux - 使用 bash 脚本删除重复文件
- md5 - 如果字符串长度相等,则 sha & md5 冲突
- hyperledger-fabric - 当管理员证书即将过期时,如何为 Hyperledger Fabric 订购者/对等方续订管理员证书
- python - 如何在python中将分钟增加到当前时间
- javascript - 如何在不单击按钮的情况下在 React useEffect 中调用 Auth0 loginWithRedirect 函数?
- web-scraping - parsehub youtube 变灰了
- java - 使用 yum 或 wget 在 Linux(Azure) 上安装 OpenJDK 11