我是R的新手,我正在尝试弄清楚如何将数据组合成一种独特的格式,然后将这些数据输入到postgres数据库中。以下是提供格式示例的代码:
std::mutex
以下是当前数据集:
df <- data.frame("1"=c("us","fr","us","fr","de", "de"), "2"=c(35, 20, 35, 20, 22.25, 125), "3"=c(105, -67.56, 105, -67.56, 138, 12), "4"=c(100, 200, 80, 160, 50, 18))
colnames(df) <- c(
"countryAbr",
"latitude",
"longitude",
"countOfResidents"
)
我想根据一个国家/地区的总发生次数组合数据,同时考虑唯一和重复的纬度和经度坐标。我也想把居民的总和结合起来。这是我期望的最终结果:
countryAbr latitude longitude countOfResidents
1 us 35.00 105.00 100
2 fr 20.00 -67.56 200
3 us 35.00 105.00 80
4 fr 20.00 -67.56 160
5 de 22.25 138.00 50
6 de 125 12 18
我使用count函数来获取国家的总出现次数(我认为??),但不确定如何组合所有内容以及要使用的函数。
countryAbr TotalCountryOccurances TotalResidentCount
1 us 2 180
2 fr 2 360
3 de 2 68
当我确实拥有最终数据集时,我想将其放入postgres表中以便在前端查询和使用。我知道如何做后者,不知道如何将R数据导入Postgres表。
**为了清晰起见,编辑重复和唯一的纬度和长**
答案 0 :(得分:2)
如果您想计算行数并计算每个唯一countryAbr
的居民人数,则可以在{{1}分组后使用dplyr
至summarise
这些计数}:
countryAbr
由于我们按library(dplyr)
result <- df %>% group_by(countryAbr) %>%
summarise(TotalCountryOccurances=n(), TotalResidentCount=sum(countOfResidents))
中的每个唯一值进行分组,因此函数countryAbr
返回组的行数,函数n()
计算列{{1}的总和对于小组来说。在这种情况下,对于sum
中的每个唯一值,行的计数和总和都超过countOfResidents
和latitude
的所有值。我假设你的意思是:
考虑唯一且重复的纬度和经度坐标。
根据您提供的数据:
longitude
答案 1 :(得分:1)
您可以使用data.table包
library(data.table)
setDT(df)
df[, .(TotalCountryOccurances = .N, TotalResidentCount = sum(countOfResidents)),
by = countryAbr]