首页 > 解决方案 > 在R中组合向量和列表

问题描述

我正在使用 strsplit 拆分数据集中的一列,并希望将一列映射到拆分数据。

这是一个示例数据集:

https://drive.google.com/file/d/1jtrn6Htezz6iRhJN0HaxXowT5JZW52ai/view?usp=sharing

我的代码如下:

library(readr)

df <- read_csv("sample for community.csv", col_names = FALSE)[,1:2]

x<-strsplit(df$X2, '\n')

y5<-x[lapply(x, length) ==5]
y4<-x[lapply(x, length) ==4]
y3<-x[lapply(x, length) ==3]


p5<-data.frame(unlist(lapply(y5, `[[`, 1)),unlist(lapply(y5, `[[`, 2)),unlist(lapply(y5, `[[`, 3)),unlist(lapply(y5, `[[`, 4)),unlist(lapply(y5, `[[`, 5)))
p4<-data.frame(unlist(lapply(y4, `[[`, 1)),unlist(lapply(y4, `[[`, 2)),unlist(lapply(y4, `[[`, 3)),unlist(lapply(y4, `[[`, 4)))
p3<-data.frame(unlist(lapply(y3, `[[`, 1)),unlist(lapply(y3, `[[`, 2)),unlist(lapply(y3, `[[`, 3)))

p5[,5]<-NULL
p3[,4]<-rep("NA")


colnames(p5)<-c("X1","X2","X3","X4")
colnames(p4)<-c("X1","X2","X3","X4")
colnames(p3)<-c("X1","X2","X3","X4")

final<-rbind(p5,p4,p3)

如您所见,由于某些数据具有不同的行数,因此行的顺序会发生变化。

我希望将第一列合并到最终数据集,但无法弄清楚如何这样做。

在真实数据集中,无法通过匹配字符串进行匹配(例如,将“String1”与包含“String1”的列匹配)

高度赞赏所有帮助。

谢谢,

马特

标签: rmergestrsplit

解决方案


这是一个基本的 R 解决方案。可能有更聪明的方法来做到这一点。

library(readr)

df <- read_csv("sample for community.csv", col_names = FALSE)[,1:2]

x<-strsplit(df$X2, '\n')

lmax= max(sapply(x,length))
p=t(sapply(x, function(x)c(x,rep(NA,lmax-length(x)))))
p=p[,-5]
colnames(p)<-c("X1","X2","X3","X4")
final=as.data.frame(p)

推荐阅读