Я пытаюсь создать новый столбец в фрейме данных на основе подмножеств из другого фрейма данных.Как создать столбец на основе подмножеств из другого фрейма данных с различным количеством строк
df<-data.frame(Name=c('Team 1','Team 1','Team 1', 'Team 2', 'Team 3','Team 3', 'Team 3','Team 4','Team 4'), In=c(8,25,2,2,1,3,3,9,24), Out=c(40,40,20,3,20,1,1,100,1), Group=c(1,1,1,-1,NA,NA,NA,1,1))
df1<-data.frame(Name=c('Team 1','Team 1','Team 1', 'Team 2','Team 2','Team 2','Team 2', 'Team 3','Team 3', 'Team 3','Team 4','Team 4'), In=c(8,25,2,2,1,3,3,9,24,35,14,19), Out=c(40,40,20,3,20,1,1,1,18,29,31,11))
df1$Group<-''
a<-subset(df,Group=='-1')
b<-subset(df,Group=='1')
head(df)
Name In Out Group
1 Team 1 8 40 1
2 Team 1 25 40 1
3 Team 1 2 20 1
4 Team 2 2 3 -1
5 Team 3 1 20 NA
6 Team 3 3 1 NA
7 Team 3 3 1 NA
8 Team 4 9 100 1
9 Team 4 24 1 1
head(df1)
Name In Out Group
1 Team 1 5 4
2 Team 1 5 4
3 Team 1 22 2
4 Team 2 21 13
5 Team 2 14 21
6 Team 2 13 11
7 Team 2 13 21
8 Team 3 19 13
9 Team 3 21 18
10 Team 3 13 29
11 Team 4 14 31
12 Team 4 19 11
Я нашел то, что я думал, что мой ответ here, и этот способ не используют подмножества, но это также не работает из-за отличающееся нумерации строк.
df1$Group <- df$Group[match(df$Name,df1$Name)]
Error in `$<-.data.frame`(`*tmp*`, "Group", value = c(1, 1, 1, -1, 1, :
replacement has 9 rows, data has 12
То, что я хочу для моего исхода, чтобы создать столбец («Group») в df1 так, что если «Name» находится в подгруппе «а», то он получает «-1», и если имя найдено в подмножестве «b», тогда оно получает «1», а все остальное, которое не соответствует категории, либо пустое, либо «NA».
Пример разыскиваемого результата:
head(df1)
Name In Out Group
1 Team 1 5 4 1
2 Team 1 5 4 1
3 Team 1 22 2 1
4 Team 2 21 13 -1
5 Team 2 14 21 -1
6 Team 2 13 11 -1
7 Team 2 13 21 -1
8 Team 3 19 13 NA
9 Team 3 21 18 NA
10 Team 3 13 29 NA
11 Team 4 14 31 1
12 Team 4 19 11 1
наборы данных Я работаю с все еще добавляются к, и очень большие, и поэтому бессмысленно делать это вручную. Я застрял на этом некоторое время, так что, надеюсь, один из вас может помочь мне разобраться в этом. Благодарю.
'df1 $ Group <- ifelse (df1 $ Name% in% a $ Name, -1, ifelse (df1 $ Name% in% b $ Name, 1, NA))' – JasonAizkalns
Это казалось неловко легким, спасибо ! –