【发布时间】:2017-04-18 10:40:53
【问题描述】:
我有一个这种格式的 csv:
Col1_Status Col1_Value Col2_Status Col2_Value Col3_Status Col3__Value
LOW 5 HIGH 5 LOW 5
LOW 8 HIGH 8 LOW 8
HIGH 82 HIGH 8 LOW 7
HIGH 83 NORMAL 8 LOW 7
HIGH 82 NORMAL 8 LOW 7
我想创建一个以高低为列的新数据框,例如:
Col1_High Col1_Low Col2_High Col2_Low Col3_High Col3_Low
82 5 5 NA NA 5
83 8 8 NA NA 8
82 NA 8 NA NA 7
NA NA NA NA NA 7
NA NA NA NA NA 7
最好的方法是什么?
目前我认为:
#extract the Status Columns from original file into DataFrame
statusDF <- ret[grepl("Status", colnames(ret))]
#extract the Value Columns from original file into DataFrame
originalValueDF <- ret[grepl("Value", colnames(ret))]
#create new columns attribute_high and attribute_low
for(i in names(originalValueDF)){
newValueDF <- originalValueDF[[paste(i, 'High', sep = "_")]]
newValueDF <- originalValueDF[[paste(i, 'Low', sep = "_")]]
}
#populate both columns based on value in attribute status column
for(i in names(originalValueDF)){
if (originalValueDF$i == "High"){
temp <- # stuck here
}
}
感谢任何建议
【问题讨论】:
-
Col3_Low = c(5, 8)... 7 在哪里?你的标准是什么? -
对不起,我只是将前两个元组作为所需的输出。标准是查看状态列并将其提取到新的高或低列中。
-
已更新输出数据框
标签: r