繁体   English   中英

如何将一列分成多列忽略R中的字符串列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM