【发布时间】:2020-02-10 09:12:05
【问题描述】:
我有一个如下所示的数据集:
ColA; ColB; ColC;
PAR; BKK; Y;
BKK; SYD; Y;
NYC; LAX; Y;
LAX; SFO; Y;
我想复制 ColC==Y 的行,如果一行的 colB==另一行的 colA,那么我想用这些值创建一行:第一行的 colA 和第二行的 colB。在我们的示例中,它看起来像这样:
ColA; ColB; ColC;
PAR; SYD; Y;
NYC; SFO; Y;
这些行将被添加到主数据集中。
我曾尝试使用“for”循环,并生成一个临时数据集来 rbind 两者,但它不起作用。
for (i in 1:nrow(maindataset)){
for (j in (i+1):nrow(maindataset)-1){
if (maindataset$colB[i]==maindataset$colA[j] & maindataset$colC[i]==maindataset$colC[j]) {
newDF<-data.frame(ColA=maindataset$colA[i],ColB=maindataset$colA[j],ColC=maindataset$colA[j],stringsAsFactors = FALSE)
maindataset<-rbind(maindataset,newDF)
}
}
}
我不确定循环是否是最佳解决方案。你知道我可以解决它的方法吗?
谢谢!
【问题讨论】: