gpt4 book ai didi

r - 改变 dplyr 以选择变量的第一个值

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

我有一个看起来像这样的数据框

test<-data.frame(x=c(100,100,101,101,102,102),y=c(1,2,1,2,1,2),z=c(NA,NA,0.1,NA,NA,0.5))

我想按 x 分组。然后创建一个新变量 ynew,我将在其中查看 z 并选择第一个不是 NA 的值,然后设置 ynew=y。如果 z 中的两个值均为 NA,那么我希望 ynew 为 NA。 ynew 应该是 NA,NA,1,1,2,2。我正在尝试使用 dplyr 来做到这一点。

我被以下问题困扰

group_by(test,x) %>% mutate(ynew=ifelse(all(is.na(z)),NA_integer_,y[corresponding index]))

最佳答案

如果 testdata.table,则以下 dplyr 方法有效

library(data.table)
test <- data.table(test)

test %>% group_by(x) %>% mutate(ynew = first(y[!is.na(z)]))

# Source: local data table [6 x 4]

# x y z ynew
# (dbl) (dbl) (dbl) (dbl)
#1 100 1 NA NA
#2 100 2 NA NA
#3 101 1 0.1 1
#4 101 2 NA 1
#5 102 1 NA 2
#6 102 2 0.5 2

或者你可以简单地使用data.table方式

test[, ynew := y[!is.na(z)], x]

关于r - 改变 dplyr 以选择变量的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35048570/

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