![](/img/trans.png)
[英]How to use tidyr in R to separate a string column into multiple other columns
[英]How to separate one column into multiple columns ignoring the string column in R
我正在尝试导入一个 csv 文件,该文件只有 1 列,其中包含多个数据。 数据由多个空格分隔。
所以我使用了下面的代码。
inputFile <- read.csv("airpollution.csv", skip = 3, header = TRUE, sep = "")
因为作为城市名称的第一列有一些带空格的名称,所以这段代码给了我一个错误。
你能告诉我一种用数字分隔列并且字符串列保持不变的方法吗?
通过创建可以使用read.csv
读取的正确 CSV 文件,您可能会避免头疼。 你的显然不是逗号分隔的。 通常最好使用命令行实用程序来执行此操作,但如果您的文件不是很大,那么您也可以在 R 中执行此操作。 这样的事情可能会奏效:
## Read file into memory
l <- readLines("airpollution.csv")
## Delete useless lines
l <- l[-c(1:3, 5L)]
## Delete leading and trailing whitespace
l <- gsub("(^\\s+)|(\\s+$)", "", l)
## Comma-delimit header
l[1L] <- gsub("\\s+", ",", l[1L])
## Comma-delimit remaining lines
l[-1L] <- gsub("\\s+(\\d)", ",\\1", l[-1L])
## Write to new file
writeLines(l, "airpollution_clean.csv")
rm(l)
## Read new file into memory as data frame
dd <- read.csv("airpollution_clean.csv")
如果airpollution.csv
包含
TABLE V7 AIR POLLUTION DATA PART1
CITY TMR SMIN SMEAN SMAX
DETROIT 817 52 128 260
EL PASO 618 47 87 207
然后airpollution_clean.csv
将包含
CITY,TMR,SMIN,SMEAN,SMAX
DETROIT,817,52,128,260
EL PASO,618,47,87,207
dd
看起来像
CITY TMR SMIN SMEAN SMAX
1 DETROIT 817 52 128 260
2 EL PASO 618 47 87 207
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.