我有一个按属性代码分组的房屋数据集。它指示在任何给定年份谁拥有财产。数据集包括年份,属性代码和所有者名称。它还包括一个名为“ change”的二进制变量,该变量指示属性的所有者是否已更改。
我想遍历每个属性组以查找所有者是否发生更改(change = 1)。当发现所有者更改时,应创建一个新数据集,其中一列具有旧所有者的名称,另一列具有新所有者的名称。
这样做的目的是最终分析所有者的性别或种族是否发生变化。我正在使用wru和gender软件包,并在确定了旧所有者和新所有者之后将它们进行比较。
我对R很陌生,如果有人可以指导我完成这项工作,我会很乐意。
property_changes <- dataset[,c(1,2,3,10)]
change_col_names <- c("year","change", "property", "name")
colnames(property_changes) <- change_col_names
groups <- group_by(property_changes, property_changes$property)
答案 0 :(得分:1)
欢迎使用R。我强烈建议您使用函数recode()查看软件包“ dplyr”,而不是循环执行,如果拥有所有权,我们可以使用“ yes”或“ no”创建一个新列。属性已更改,这可以允许您仅过滤所有权更改的行。我创建了一个简单的示例进行解释。
library(dplyr)
year = seq(2000, 2009, 1)
change = c(0,0,0,0,1,0,1,0,0,0)
owner = (c("bob", "bob", "bob", "bob", "alice", "alice", "lisa", "lisa", "lisa", "lisa"))
prop <- data.frame(year, change, owner)
prop %>%
group_by("owner") %>%
mutate(change_in_ownership=recode(change,
`0`="No",
`1`="yes")) %>%
filter(change_in_ownership == 'yes')
过滤后我的输出是:
year change owner `"owner"` change_in_ownership
<dbl> <dbl> <fct> <chr> <chr>
1 2004 1 alice owner yes
2 2006 1 lisa owner yes