簡體   English   中英

根據嵌套組中的組事件在數據框中生成新列

[英]Generate new column in dataframe, based on group-event in nested groups

我有一個數據框,其中包含三個“主要”組(x:1、2、3),三個主要組(v:2、3或1)和主要組中的一些事件(0和1 Y):

x <- c(1, 1, 1, 2, 2, 3, 3, 3, 3)
v <- c(2, 3, 3, 2, 2, 1, 1, 2, 2)
y <- c(0, 0, 1, 0, 0, 0, 0, 0, 1)
df <- data.frame(x, v, y)
df

> df
  x v y
1 1 2 0
2 1 3 0
3 1 3 1
4 2 2 0
5 2 2 0
6 3 1 0
7 3 1 0
8 3 2 0
9 3 2 1

例如:在組1(x = 1)中,還有另外兩個組(v = 2和v = 3),事件y = 1發生在組x = 1和v = 3中。

現在,我想基於y中的事件生成一個新的列z:如果一個組中的y = 1,則x中v組中的所有情況都應為z取1; 不,不。 如何以這種方式生成z? df應該看起來像:

> df
  x v y  z
1 1 2 0 NA
2 1 3 0  1
3 1 3 1  1
4 2 2 0 NA
5 2 2 0 NA
6 3 1 0  1
7 3 1 1  1
8 3 2 0 NA
9 3 2 0 NA

感謝您的幫助。

嘗試這個:

library(dplyr)

df %>%
group_by(x, v) %>%
mutate(
z = ifelse(any(y == 1), 1, NA)
)
df %>% group_by(x, v) %>% mutate(z = if(any(y == 1)) 1 else NA)

通過分組后xy ,新列z填充有1 ',如果有任何小號1的在y並與NA的說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM