首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中向量与列表的结合

R中向量与列表的结合
EN

Stack Overflow用户
提问于 2018-11-05 18:16:15
回答 2查看 39关注 0票数 0

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

下面是一个示例数据集:

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

我的代码如下:

代码语言:javascript
复制
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“的列匹配)进行匹配。

所有的帮助都是非常感谢的。

谢谢,

哑光

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-05 19:02:03

这是一个基本的R解。也许有更明智的方法来做到这一点。

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2018-11-05 19:05:29

tidyverse

代码语言:javascript
复制
library(tidyverse)
df %>% 
   separate(X2, into = paste0("X2_", 1:4), sep="\\s*\n\\s*")
# A tibble: 5 x 5
#  X1      X2_1         X2_2         X2_3         X2_4        
#  <chr>   <chr>        <chr>        <chr>        <chr>       
#1 String1 String1Line1 String1Line2 String1Line3 String1Line4
#2 String2 String2Line1 String2Line2 String2Line3 String2Line4
#3 String3 String3Line1 String3Line2 String3Line3 ""          
#4 String4 String4Line1 String4Line2 String4Line3 String4Line4
#5 String5 String5Line1 String5Line2 String5Line3 String5Line4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53159956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档