【发布时间】:2019-12-05 14:03:20
【问题描述】:
下面是我的场景。
场景
我有两个数据框。第一个数据框包含有关系统使用情况的数据,另一个数据框包含有关系统位置的数据。我想根据系统的使用日期以及仪器所在的位置来跟踪仪器的使用情况。为此,我正在使用 dplyr 库对数据框执行外连接。接下来,我想根据日期获取系统的频率计数。为此,我在系统和位置上使用groupby。如果系统未使用,则该系统的频率计数应为 0。但是,当我查看位于位置 3 的系统 6 时。由于仪器未使用(无日期〜假设未使用),该系统的频率计数应为 0,因为日期或用户列不包含任何数据。但是,下面的代码返回的频率计数为 1。我不确定,可能是什么问题。下面是当前和预期的输出。
提供代码解释。
数据框 1:
df <- data.frame("Users" =c('A',"B","A",'C','B'), "Date" = c('17-03-2019','15-03-2019','11-03-2019','20-04-2019',"21-04-2019"), "Systems" = c("Sys1", "Sys1","Sys2","Sys3","Sys4"), stringsAsFactors = FALSE)
df
Users Date Systems
1 A 17-03-2019 Sys1
2 B 15-03-2019 Sys1
3 A 11-03-2019 Sys2
4 C 20-04-2019 Sys3
5 B 21-04-2019 Sys4
数据框 2
loc_df<-data.frame("Locations" =c('loc1','loc1','loc2','loc2','loc3'),"Systems" = c("Sys1","Sys2","Sys3","Sys4","Sys6"), stringsAsFactors = FALSE)
loc_df
Locations Systems
1 loc1 Sys1
2 loc1 Sys2
3 loc2 Sys3
4 loc2 Sys4
5 loc3 Sys6
频率计数代码
#Merging df
merge_df<-join(df, loc_df,type = "full")
#Replcaing NA's with 0
merge_df[is.na(merge_df)] <- 0
merge_df
#Code for frequency count
merge_df %>%
group_by(Systems,Locations)%>%
summarise(frequency = n())
电流输出:
Systems Locations frequency
<chr> <chr> <int>
1 Sys1 loc1 2
2 Sys2 loc1 1
3 Sys3 loc2 1
4 Sys4 loc2 1
5 Sys6 loc3 1
预期输出
Systems Locations frequency
<chr> <chr> <int>
1 Sys1 loc1 2
2 Sys2 loc1 1
3 Sys3 loc2 1
4 Sys4 loc2 1
5 Sys6 loc3 0
【问题讨论】:
标签: r dataframe dplyr plyr outer-join