如何基于R中的多列填充一列的值?

hmae6n7t  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(165)

我试图根据多个其他列来填充一列的值,但我不知道该如何处理。下面是我正在使用的数据框的一个示例。每行代表一个人。women_line列是家庭中女性的索引。cluster_household列代表一个人是否在同一家庭中。同一cluster_家庭价值意味着那些人在同一个家庭里。宗教就是这个人是什么宗教。
| 妇女热线|集群_住户|宗教|
| - ------|- ------|- ------|
| 不适用|十一|不适用|
| 第二章|十一|第二章|
| 不适用|十一|不适用|
| 不适用|十一|不适用|
| 不适用|十一|不适用|
| 不适用|十一|不适用|
| 不适用|十一|不适用|
| 1个|1 2|三个|
| 不适用|1 2|不适用|
| 不适用|1 2|不适用|
所以问题是,女人是唯一一个回答家庭问题的人,所以只有她有宗教价值观,我想把她对宗教的回答应用到她家里的每个人身上。
例如:我希望将该女性(在women_line中表示为2)在religion(2)中的答案应用于她的cluster_household(1 1)中的每个人,以便为他们分配2,而不是用于religion的NA。我还希望对cluster_household 1 2中的女性执行相同的操作。我如何在R中执行此操作?
我试着做了一个ifelse和case_when,但是我甚至不知道我做得是否正确,或者这是否是正确的方法。

velaa5lx

velaa5lx1#

您可以在dplyr::group_by之后将tidyr::fill.direction = "downup"一起使用:

library(dplyr)
df %>% 
  group_by(cluster_household) %>%
  tidyr::fill(religion, .direction = "downup")

#    women_line cluster_household religion
#         <int> <chr>                <int>
#  1         NA 1_1                      2
#  2          2 1_1                      2
#  3         NA 1_1                      2
#  4         NA 1_1                      2
#  5         NA 1_1                      2
#  6         NA 1_1                      2
#  7         NA 1_1                      2
#  8          1 1_2                      3
#  9         NA 1_2                      3
# 10         NA 1_2                      3

数据:

df <- read.table(text = "women_line cluster_household   religion
NA  1_1 NA
2   1_1 2
NA  1_1 NA
NA  1_1 NA
NA  1_1 NA
NA  1_1 NA
NA  1_1 NA
1   1_2 3
NA  1_2 NA
NA  1_2 NA", h = T)

相关问题