我的问题是我有一个5列的数据框,其中4列包含名称,1列包含状态.例如
X1 X2 X3 X4 X5
1 name1 NA name3 NA active
2 name1 name2 NA name4 inactive
3 NA name2 name3 name4 unknown
4 name1 name2 NA NA inactive
5 name1 name2 name3 name4 unknown
Run Code Online (Sandbox Code Playgroud)
我想做的是col X5在每个X1,X2,X3和X4之间交替,并用下划线(name1_active,name2_inactive)将它们粘贴在一起,而不考虑这些NA情况.
X1 X5 X2 X5 X3 X5 X4 X5
1 name1 active NA NA name3 active NA NA
2 name1 inactive name2 inactive NA NA name4 inactive
3 NA NA name2 unknown name3 unknown name4 unknown
4 name1 inactive name2 inactive NA NA NA NA
5 name1 unknown name2 unknown name3 unknown name4 unknown
Run Code Online (Sandbox Code Playgroud)
输出:
X1 X2 X3 X4
1 name1_active NA name3_active NA
2 name1_inactive name2_inactive NA name4_inactive
3 NA name2_unknown name3_unknown name4_unknown
4 name1_inactive name2_inactive NA NA
5 name1_unknown name2_unknown name3_unknown name4_unknown
Run Code Online (Sandbox Code Playgroud)
尝试:
d <- read.table(text = "X1 X2 X3 X4 X5
1 name1 NA name3 NA active
2 name1 name2 NA name4 inactive
3 NA name2 name3 name4 unknown
4 name1 name2 NA NA inactive
5 name1 name2 name3 name4 unknown", header = TRUE)
as.data.frame(lapply(d[, 1:4], function(x) ifelse(is.na(x), NA, paste(x, d$X5, sep = "_"))))
# X1 X2 X3 X4
#1 name1_active <NA> name3_active <NA>
#2 name1_inactive name2_inactive <NA> name4_inactive
#3 <NA> name2_unknown name3_unknown name4_unknown
#4 name1_inactive name2_inactive <NA> <NA>
#5 name1_unknown name2_unknown name3_unknown name4_unknown
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |