【发布时间】:2018-10-16 18:07:44
【问题描述】:
我有以下信息:
M_PT
CEDIS | PLAZA
9999999021-1 | 10MDA
9999999021-2 | 10CAN
9999999012-1 | 10GUD','10CLJ
9999999012-2 | 10DZV
9999999025-1 | 10LPB','10HHM','10OBR','10HER
9999999025-2 | 10DCU
我想最终得到以下结果:
CEDIS | PLAZA
9999999021-1 | 10MDA
9999999021-2 | 10CAN
9999999012-1 | 10GUD
9999999012-1 | 10CLJ
9999999012-2 | 10DZV
9999999025-1 | 10LPB
9999999025-1 | 10HHM
9999999025-1 | 10OBR
9999999025-1 | 10HER
9999999025-2 | 10DCU
我尝试执行以下操作,但失败了:
> vec <- rep(NA,length(unlist(strsplit(M_PT[,"PLAZA"],split="','"))))
> j <- 0
>
> for(i in 1:nrow(M_PT)){
+
+ if(nchar(M_PT[i,"PLAZA"]) == 5){
+
+ vec[i] <- paste(M_PT[i,"CEDIS"],M_PT[i,"PLAZA"],sep="-")
+
+ }else{
+
+ for(j in 1:sum(nchar(gsub("','","",M_PT[i,"PLAZA"])) / 5)){
+
+ vec[i + ifelse(j == 1, 0, j - 1)] <- paste(M_PT[i,"CEDIS"],
unlist(strsplit(M_PT[i,"PLAZA"],split="','"))[j],sep="-")
+
+ }
+ }
+ }
请问有什么解决办法吗?
【问题讨论】:
-
我已经修复了帖子的结构,现在应该可以理解了。
-
如果你不想使用包,你可以修改链接重复帖子中的第一个答案,如下所示:
s <- strsplit(dat$PLAZA, split = ","); dat <- data.frame(CEDIS = rep(dat$CEDIS, sapply(s, length)), PLAZA = unlist(s)); dat
标签: r loops for-loop dataframe