繁体   English   中英

在R中,尝试将衣衫agged的CSV转换为value.frame的data.frame,列出

[英]In R, trying to convert a ragged CSV into data.frame of Value, list

我有一个输入文件,如:

1A10, 77002, 77003, 77010, 77020
1A20, 77002, 77006, 77007, 77019
1A30, 77006, 77019, 77098
1A40, 77007, 77019, 77027, 77098
1A50, 77005, 77007, 77019, 77024, 77027, 77046, 77081, 77098, 77401
etc....

我想创建一个数据框(小标题),其中第一列与csv的第一列相同,第二列是与其余列相对应的列表。

我惨败了。 这是我最后的失败

library(stringr)
library(tidyverse)

options(stringsAsFactors = FALSE)

infile <- "~/Rprojects/CrimeStats/BeatZipcodes.csv"

# create empty data frame
BeatToZip <- data_frame(
    beat=character(),
    zips=list()
)

con=file(infile,open="r")
line=readLines(con) 
long=length(line)
for (i in 1:long){
    print(line[i])
    line[i] <- trimws(line[i])
    beat <- str_split(line[i],", *")[[1]][1]
    zips <- as.list(str_split(line[i],", *")[[1]][-1])
    temp <- data_frame(beat, zips)
    BeatToZip <- rbind(BeatToZip, temp)
}
close(con)

使用read.csvfill = TRUE读取文件后的一种选择

library(tidyverse)
df1 <- read.csv(infile, fill = TRUE, header = FALSE)

gatherfirst列以外的所有列(按第一列分组),将其他列summariselist

df1 %>%
   gather(key, val, -1, na.rm = TRUE) %>%
   group_by(key) %>%
   summarise(listCol = list(val))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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