Есть ли способ заполнить недостающие данные в столбце R - PullRequest
0 голосов
/ 09 мая 2020

Я хочу заполнить недостающие данные в столбце.

Вот пример данных, которые у меня есть. Первый столбец показывает имя сотрудника, а второй столбец соответствует региону, в котором он работает. Каждый сотрудник работает только в одном из офисов и не работает более чем в одном. Таким образом, в приведенном ниже примере, поскольку не пропущенные значения для Билла показывают Восток, то Билл работает в Восточном местоположении. У меня вопрос, как мне заменить все НП для Билла на правильный регион. И как я могу сделать то же самое для каждого из других сотрудников.

    Name     Region
 1  Bill     East
 2  Bill     East
 2  Bill     NA
 4  Bill     NA
 5  Karen    NA
 6  Karen    South
 7  Karen    NA
 8  Richard  NA 
 9  Richard  West 
10  Richard  NA
11  Richard  West

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Используя основание 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"))
  1. Кто эти люди:
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
0 голосов
/ 09 мая 2020
library(tidyr) 
library(dplyr)

group_by(df, Name) %>% fill(Region, .direction="downup")

# A tibble: 11 x 2
# Groups:   Name [3]
   Name    Region
   <fct>   <fct> 
 1 Bill    East  
 2 Bill    East  
 3 Bill    East  
 4 Bill    East  
 5 Karen   South 
 6 Karen   South 
 7 Karen   South 
 8 Richard West  
 9 Richard West  
10 Richard West  
11 Richard West  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...