R 如何在用户id#中应用if-else语句?

R 如何在用户id#中应用if-else语句?,r,subset,dummy-variable,R,Subset,Dummy Variable,我试图创建一个虚拟变量,用于标记参加特定活动的人员的用户id。每个用户id都有多行,我希望此虚拟变量应用于标记用户id的每一行。例如,使用下面的数据集,我希望标记参加“事件b”的每个人的用户id(参加的事件b使用“1”,未参加的事件b使用“0”)。棘手的是,我希望1出现在与“事件b”参与者的用户ID匹配的每一行中 我想使用这个虚拟变量来最终对数据进行子集,以便评估参加特定活动的用户的事件参与模式 df<-data.frame(id=(100,100,100,101,101,102,102,

我试图创建一个虚拟变量,用于标记参加特定活动的人员的用户id。每个用户id都有多行,我希望此虚拟变量应用于标记用户id的每一行。例如,使用下面的数据集,我希望标记参加“事件b”的每个人的用户id(参加的事件b使用“1”,未参加的事件b使用“0”)。棘手的是,我希望1出现在与“事件b”参与者的用户ID匹配的每一行中

我想使用这个虚拟变量来最终对数据进行子集,以便评估参加特定活动的用户的事件参与模式

df<-data.frame(id=(100,100,100,101,101,102,102,103,103,103,103),
             event=("a","b","c","b","d","a","c","a","c","d","e"))

df据我所知,您想要一个热编码。
您可以将以下代码与插入符号包的dummyVars函数一起使用。然后,使用相应的dplyr函数聚合重复的行

library(caret)
library(dplyr)

df<-data.frame(id=c(100,100,100,101,101,102,102,103,103,103,103),
               event=c("a","b","c","b","d","a","c","a","c","d","e"))



dmy <- dummyVars(" ~ .", data = df)
trsf <- data.frame(predict(dmy, newdata = df))
aggregate(.~id, trsf, FUN=sum)

   id event.a event.b event.c event.d event.e
1 100       1       1       1       0       0
2 101       0       1       0       1       0
3 102       1       0       1       0       0
4 103       1       0       1       1       1
库(插入符号)
图书馆(dplyr)

df据我所知,您想要一个热编码。 您可以将以下代码与插入符号包的dummyVars函数一起使用。然后,使用相应的dplyr函数聚合重复的行

library(caret)
library(dplyr)

df<-data.frame(id=c(100,100,100,101,101,102,102,103,103,103,103),
               event=c("a","b","c","b","d","a","c","a","c","d","e"))



dmy <- dummyVars(" ~ .", data = df)
trsf <- data.frame(predict(dmy, newdata = df))
aggregate(.~id, trsf, FUN=sum)

   id event.a event.b event.c event.d event.e
1 100       1       1       1       0       0
2 101       0       1       0       1       0
3 102       1       0       1       0       0
4 103       1       0       1       1       1
库(插入符号)
图书馆(dplyr)

df考虑
ifelse
ave
,迭代事件的
唯一值或
级别

for(ev in unique(df$event)) {   # for(ev in levels(df$event)) {
    df[[paste0("event_", ev, "_flag")]] <- with(df, ave(ifelse(event == ev, 1, 0), id, FUN=max))
}

df
#     id event event_a_flag event_b_flag event_c_flag event_d_flag event_e_flag
# 1  100     a            1            1            1            0            0
# 2  100     b            1            1            1            0            0
# 3  100     c            1            1            1            0            0
# 4  101     b            0            1            0            1            0
# 5  101     d            0            1            0            1            0
# 6  102     a            1            0            1            0            0
# 7  102     c            1            0            1            0            0
# 8  103     a            1            0            1            1            1
# 9  103     c            1            0            1            1            1
# 10 103     d            1            0            1            1            1
# 11 103     e            1            0            1            1            1
for(ev-in-unique(df$event)){#for(ev-in-levels(df$event)){

df[[paste0(“事件”、“ev”、“U标志”)]考虑
ifelse
ave
,在
事件的唯一值或
级别上迭代

for(ev in unique(df$event)) {   # for(ev in levels(df$event)) {
    df[[paste0("event_", ev, "_flag")]] <- with(df, ave(ifelse(event == ev, 1, 0), id, FUN=max))
}

df
#     id event event_a_flag event_b_flag event_c_flag event_d_flag event_e_flag
# 1  100     a            1            1            1            0            0
# 2  100     b            1            1            1            0            0
# 3  100     c            1            1            1            0            0
# 4  101     b            0            1            0            1            0
# 5  101     d            0            1            0            1            0
# 6  102     a            1            0            1            0            0
# 7  102     c            1            0            1            0            0
# 8  103     a            1            0            1            1            1
# 9  103     c            1            0            1            1            1
# 10 103     d            1            0            1            1            1
# 11 103     e            1            0            1            1            1
for(ev-in-unique(df$event)){#for(ev-in-levels(df$event)){

df[[paste0(“事件”,ev,“\u标志”)]也许我在使用一种简单的方法。使用
dplyr
tidyr

df%>%
变异(值=1)%>%
透视图(名称来自=“事件”,值填充=0)
返回

# A tibble: 4 x 6
     id     a     b     c     d     e
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1   100     1     1     1     0     0
2   101     0     1     0     1     0
3   102     1     0     1     0     0
4   103     1     0     1     1     1
#一个tible:4 x 6
id a b c d e
1   100     1     1     1     0     0
2   101     0     1     0     1     0
3   102     1     0     1     0     0
4   103     1     0     1     1     1

也许我在使用一种简单的方法。使用
dplyr
tidyr

df%>%
变异(值=1)%>%
透视图(名称来自=“事件”,值填充=0)
返回

# A tibble: 4 x 6
     id     a     b     c     d     e
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1   100     1     1     1     0     0
2   101     0     1     0     1     0
3   102     1     0     1     0     0
4   103     1     0     1     1     1
#一个tible:4 x 6
id a b c d e
1   100     1     1     1     0     0
2   101     0     1     0     1     0
3   102     1     0     1     0     0
4   103     1     0     1     1     1