% as.numeric ifelse(df$a < 4, df$c == "group a", df$c == "group b" 但这将每个变量都强制为 N-6ren">
gpt4 book ai didi

r - 如何通过列中的值创建 "group"列

转载 作者:行者123 更新时间:2023-12-01 11:06:57 25 4
gpt4 key购买 nike

 df <- data.frame(a = c("1", "1", "2", "3", "3", "4", "4", "5"),b = c(1:8))

我正在尝试创建一个组列 df$c,以便 df 中的变量“1”、“2”和“3”以及变量“4”和“5” $a 组合在一起。

  a b         c
"1" 1 "group a"
"1" 2 "group a"
"2" 3 "group a"
"3" 4 "group a"
"3" 5 "group a"
"4" 6 "group b"
"4" 7 "group b"
"5" 8 "group b"

我无法使用 cut() 因为这似乎需要 2< 组。

我试图将列 a 转换为数字类并使用 ifelse()

df$a <- df$a %>% as.character %>% as.numeric
ifelse(df$a < 4, df$c == "group a", df$c == "group b"

但这将每个变量都强制为 NA

最佳答案

如果您想使用cut,您可以指定中断的外边缘。这对 ifelse 语句是有利的,因为它更具可扩展性。如果你有更多的组,有很多切点,你就不必写出所有的条件:

df$c <- cut(as.numeric(df$a), c(1,3,5), c("group a", "group b"), include.lowest=TRUE)
# a b c
# 1 1 1 group a
# 2 1 2 group a
# 3 2 3 group a
# 4 3 4 group a
# 5 3 5 group a
# 6 4 6 group b
# 7 4 7 group b
# 8 5 8 group b

关于r - 如何通过列中的值创建 "group"列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32978983/

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