Используя основание R, шаг за шагом:
data=data.frame(name=c(rep("bill",4),rep("karen",3),rep("richard",4)),region=c("E","E",NA,NA,NA,"S",NA,NA,"W",NA,"W"))
- Кто эти люди:
people=as.character(unique(data[,1]))
people
# [1] "bill" "karen" "richard"
Где каждый работает? получить первый регион не из Северной Америки:
region=sapply(people,function(p) (data[data[,1]==p & !is.na(data[,2]),2])[1])
region
# bill karen richard
# E S W
# Levels: E S W
Введите данные:
data[,2]=region[data[,1]]
data
Вывод:
name region
1 bill E
2 bill E
3 bill E
4 bill E
5 karen S
6 karen S
7 karen S
8 richard W
9 richard W
10 richard W
11 richard W