gpt4 book ai didi

r - 当其他几个列中的任何一个的值为 TRUE(或 1)时,使用 mutate() 创建新列

转载 作者:行者123 更新时间:2023-12-05 02:45:13 25 4
gpt4 key购买 nike

我有一个包含 5 列的数据框 (my_dataframe)。都有 0 或 1 个值。我想创建一个名为 cn7_any 的新列,当列 2:5 中的任何值 ==1 时,该列的值应为 1。

structure(list(cn7_normal = c(1L, 1L, 1L, 1L, 1L, 1L), 
cn7_right_paralysis_central = c(0L, 0L, 0L, 0L, 0L, 0L),
cn7_right_paralysis_peripheral = c(0L, 0L, 0L, 0L, 0L, 0L),
cn7_left_paralysis_central = c(0L, 0L, 0L, 0L, 0L, 0L),
cn7_left_paralysis_peripheral = c(0L, 0L, 0L, 0L, 0L, 0L)),
row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
))
> head(my_dataframe)
# A tibble: 6 x 5
cn7_normal cn7_right_paralysis_cen… cn7_right_paralysis_perip… cn7_left_paralysis_cen… cn7_left_paralysis_peri…
<int> <int> <int> <int> <int>
1 1 0 0 0 0
2 1 0 0 0 0

我可以用 case_when() 成功地做到这一点:

my_dataframe<-my_dataframe%>%
mutate(cn7_paralisis_any=case_when(cn7_right_paralysis_central==1 ~ 1,
cn7_right_paralysis_peripheral==1 ~ 1,
cn7_left_paralysis_central==1 ~ 1,
cn7_left_paralysis_peripheral==1 ~ 1,
TRUE ~ 0)
)

虽然可行,但我想知道是否有更简单、更简洁的解决方案。我觉得我应该以某种方式使用 any() 。有什么想法吗?

最佳答案

my_dataframe$cn7_any <- apply(my_dataframe[ , 2:5], 1, max)

关于r - 当其他几个列中的任何一个的值为 TRUE(或 1)时,使用 mutate() 创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66056077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com