r中的组(房屋数据)

时间:2020-01-28 19:42:56

标签: r sorting

我有一个按属性代码分组的房屋数据集。它指示在任何给定年份谁拥有财产。数据集包括年份,属性代码和所有者名称。它还包括一个名为“ 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)

sample of the dataset

1 个答案:

答案 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