我有一个dataframe:
df <- structure(list(ziekten = c(1, 2, 2, 2, 2, 2, 1, 2, 2, 2), voedselallergie = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no"), ziekaller2 = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no"), hooikoorts = c("yes",
"no", "no", "no", "no", "no", "yes", "no", "no", "no"), ziekaller4 = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no"), ziekaller5 = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no"), anderallergie = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no"), astma = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no"), ziekdiabet1 = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no")), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
这只是我在实际 Dataframe 中拥有的列总数的一小部分,但我想将列中的值更改为相应的列名。我知道如何使用ifelse
或case_when
来完成,但这并不有效。
第一列可以保持原样,所以从第二列开始,我想将值'yes'更改为列名。这将是结果:
df_new <- structure(list(ziekten = c(1, 2, 2, 2, 2, 2, 1, 2, 2, 2), voedselallergie = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA), ziekaller2 = c(NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA), hooikoorts = c("hooikoorts", NA,
NA, NA, NA, NA, "hooikoorts", NA, NA, NA), ziekaller4 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA), ziekaller5 = c(NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA), anderallergie = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA), astma = c(NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA), ziekdiabet1 = c(NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA)), row.names = c(NA, -10L), class = c("tbl_df", "tbl",
"data.frame"))
希望能帮到你!
3条答案
按热度按时间9jyewag01#
一个衬垫底座R:
bogh5gae2#
我们可以在
across
中使用cur_column()
或者在
base R
- one-liner中(第一行只是转换为data.frame),而不使用ifelse或case_when(如OP的帖子中提到的)brjng4g33#
您可以在
lapply
中使用names
。或者使用索引(例如,在名称重复的情况下)。
基准