我試圖根據其他變數的值創建一個新的字符變數(在我的示例 V4 中)。我需要使用列名來填充這個新變數。
我有這個:
V1 V2 V3
1 1 0 1
2 0 1 1
3 0 0 0
4 1 1 1
我希望新變數包含值等于 1 的所有列名
像這樣:
V1 V2 V3 V4
1 1 0 1 "V1,V3"
2 0 1 1 "V2,V3"
3 0 0 0 " "
4 1 1 1 "V1,V2,V3"
示例資料:
data.frame(
V1 =c(1,0,0,1),
V2 = c(0,1,0,1),
V3 = c(1,1,0,1)
)
uj5u.com熱心網友回復:
您可以使用以下代碼:
library(dplyr)
df %>%
rowwise() %>%
mutate(V4 = paste0(names(.)[c_across() == 1], collapse = ','))
輸出:
# A tibble: 4 × 4
# Rowwise:
V1 V2 V3 V4
<dbl> <dbl> <dbl> <chr>
1 1 0 1 "V1,V3"
2 0 1 1 "V2,V3"
3 0 0 0 ""
4 1 1 1 "V1,V2,V3"
uj5u.com熱心網友回復:
與base R_apply
df1$V4 <- apply(df1, 1, \(x) toString(names(x)[x ==1]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484941.html
