r - 如何在R中重构数据框
问题描述
例如,给定以下数据结构
v1 = c("DL1", "", "DL3", "DL4", "")
v2 = c("DL1", "DL2", "DL3", "","DL5")
v3 = c("DL1", "DL2", "DL3", "","DL5")
v4 = c( "", "", "DL3", "","DL5")
v5 = c( "", "", "", "","DL5")
data1 = rbind(v1,v2,v3,v4,v5)
我要生成
vt1 = c("DL1", "DL3", "DL4", "","")
vt2 = c("DL1", "DL2", "DL3", "DL5","")
vt3 = c("DL1", "DL2", "DL3", "DL5","")
vt4 = c("DL3", "" , "", "","")
vt5 = c("DL5", "" , "", "","")
data2 = rbind(vt1,vt2,vt3,vt4,vt5)
解决方案
一个可能的解决方案是这样。
m <- data.frame(t(rbind(v1,v2,v3,v4,v5)), stringsAsFactors=FALSE)
mx <- t(sapply(m, function(x) {
s <- x[x != ""]
e <- 5 - length(s)
return(c(s, rep("", e)))
}))
要获取行名:
rownames(mx) <- gsub("v", "vt", rownames(mx))
生产
> mx
[,1] [,2] [,3] [,4] [,5]
vt1 "DL1" "DL3" "DL4" "" ""
vt2 "DL1" "DL2" "DL3" "DL5" ""
vt3 "DL1" "DL2" "DL3" "DL5" ""
vt4 "DL3" "DL5" "" "" ""
vt5 "DL5" "" "" "" ""
推荐阅读
- c# - PHP dat 文件读取
- python - Kivy-ios:工具链构建 python3 Kivy 错误
- django - Django - get() 是懒惰的吗?
- css - Tranparent gradient to shade a div
- reactjs - Accessing API Cors in React
- javascript - I can't check for multiple choice field in Angular. How can I do it?
- dax - Dynamic grouping based on year selection
- ios - How to use scripts to compress Xcode projects and cocoapods' local dependencies
- salesforce - Channel Account Manager
- javascript - Cannot limit value in real time