R 向数据中添加列。将行均匀分配给列表中的值的框架

R 向数据中添加列。将行均匀分配给列表中的值的框架,r,dataframe,tidyverse,R,Dataframe,Tidyverse,我有一个数据框架,每一排都是一个家庭,我有一份采访者名单。其目的是将采访者分配到各个家庭,每个采访者应获得每个城市相同数量的家庭。比如说, example <- data.frame(city = c("Los Angeles", "Los Angeles", "Los Angeles", "San Diego", "San Diego&

我有一个数据框架,每一排都是一个家庭,我有一份采访者名单。其目的是将采访者分配到各个家庭,每个采访者应获得每个城市相同数量的家庭。比如说,

example <- data.frame(city = c("Los Angeles", "Los Angeles", "Los Angeles", 
                               "San Diego", "San Diego", "San Diego", "San Diego", "San Diego",
                               "Santa Barbara", "Santa Barbara", "Santa Barbara", "Santa Barbara", "Santa Barbara"), 
                      household_id = seq(1, 13))
interviewer <- c("A", "B", "C")

示例您可以尝试使用
rep
为每个
城市重复
采访者

library(dplyr)

example %>%
  group_by(city) %>%
  mutate(interviewer = rep(interviewer, length.out = n()))

#   city          household_id interviewer
#   <chr>                <int> <chr>      
# 1 Los Angeles              1 A          
# 2 Los Angeles              2 B          
# 3 Los Angeles              3 C          
# 4 San Diego                4 A          
# 5 San Diego                5 B          
# 6 San Diego                6 C          
# 7 San Diego                7 A          
# 8 San Diego                8 B          
# 9 Santa Barbara            9 A          
#10 Santa Barbara           10 B          
#11 Santa Barbara           11 C          
#12 Santa Barbara           12 A          
#13 Santa Barbara           13 B          
库(dplyr)
示例%>%
组别(城市)%>%
变异(面试官=代表(面试官,length.out=n())
#城市住户身份证面试官
#                          
#洛杉矶一号甲
#洛杉矶2号乙
#3洛杉矶3 C
#4圣地亚哥4A
#5圣地亚哥5B
#6圣地亚哥6 C
#7圣地亚哥7 A
#8圣地亚哥8B
#9圣巴巴拉9 A
#10圣巴巴拉10 B
#11圣巴巴拉11 C
#12圣巴巴拉12 A
#13圣巴巴拉13 B

您可以尝试使用
rep
为每个
城市重复
采访者

library(dplyr)

example %>%
  group_by(city) %>%
  mutate(interviewer = rep(interviewer, length.out = n()))

#   city          household_id interviewer
#   <chr>                <int> <chr>      
# 1 Los Angeles              1 A          
# 2 Los Angeles              2 B          
# 3 Los Angeles              3 C          
# 4 San Diego                4 A          
# 5 San Diego                5 B          
# 6 San Diego                6 C          
# 7 San Diego                7 A          
# 8 San Diego                8 B          
# 9 Santa Barbara            9 A          
#10 Santa Barbara           10 B          
#11 Santa Barbara           11 C          
#12 Santa Barbara           12 A          
#13 Santa Barbara           13 B          
库(dplyr)
示例%>%
组别(城市)%>%
变异(面试官=代表(面试官,length.out=n())
#城市住户身份证面试官
#                          
#洛杉矶一号甲
#洛杉矶2号乙
#3洛杉矶3 C
#4圣地亚哥4A
#5圣地亚哥5B
#6圣地亚哥6 C
#7圣地亚哥7 A
#8圣地亚哥8B
#9圣巴巴拉9 A
#10圣巴巴拉10 B
#11圣巴巴拉11 C
#12圣巴巴拉12 A
#13圣巴巴拉13 B

谢谢!这太优雅了!我不知道有一场旷日持久的争论,谢谢!这太优雅了!我不知道有一场旷日持久的争论。