gpt4 book ai didi

r - 查看每个 id 是否有任何非 NA 值

转载 作者:行者123 更新时间:2023-12-04 00:16:04 24 4
gpt4 key购买 nike

在下面的长格式数据框中(即每个测量点一行),我想找出哪个人(变量 ID)在两个 Var1< 上都只有 NA/em> 和 Var2 以及哪个人在 Var1Var2 上至少有一个非 NA 值。只有 NA 值的那些应该在第 0 组,那些至少有一个非 NA 值的应该在第 1 组。

df <- read.table(text=
"ID Var1 Var2
800057 NA NA
800057 NA NA
800057 NA NA
800057 NA 1
800057 NA NA
800119 NA NA
800119 NA NA
800119 NA NA
834011 1 NA
834011 3 NA
834341 NA NA
834341 5 NA
834341 NA NA
834341 NA NA
834341 3 NA", header=TRUE)

我的结果会是这样的:

df <- read.table(text=
"ID Var1 Var2 Group
800057 NA NA 1
800057 NA NA 1
800057 NA NA 1
800057 NA 1 1
800057 NA NA 1
800119 NA NA 0
800119 NA NA 0
800119 NA NA 0
834011 1 NA 1
834011 3 NA 1
834341 NA NA 1
834341 5 NA 1
834341 NA NA 1
834341 NA 2 1
834341 3 NA 1", header=TRUE)

我想尝试使用 group_by(ID)mutate() 来创建组变量的解决方案。

最佳答案

你可以使用all:

library(dplyr)
df %>%
group_by(ID) %>%
mutate(Group = as.integer(!all(is.na(Var1) & is.na(Var2))))

# ID Var1 Var2 Group
# <int> <int> <int> <int>
# 1 800057 NA NA 1
# 2 800057 NA NA 1
# 3 800057 NA NA 1
# 4 800057 NA 1 1
# 5 800057 NA NA 1
# 6 800119 NA NA 0
# 7 800119 NA NA 0
# 8 800119 NA NA 0
# 9 834011 1 NA 1
#10 834011 3 NA 1
#11 834341 NA NA 1
#12 834341 5 NA 1
#13 834341 NA NA 1
#14 834341 NA NA 1
#15 834341 3 NA 1

或者可以将最后一行更改为使用 any :

mutate(Group = as.integer(any(!is.na(Var1) | !is.na(Var2))))

关于r - 查看每个 id 是否有任何非 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63672645/

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