我当前在R
中的数据框只有2列,即经度和纬度。大约有1500条记录(行),它们包含大量重复项。
数据帧摘录如下所示:
longitude latitude
57.408999 -20.208104
57.667991 -20.13641
57.539122 -20.103416
57.502332 -20.124798
57.414653 -20.261872
57.65949 -20.126768
57.468383 -20.223031
57.754464 -20.25823
57.754464 -20.25823
57.680745 -20.121893
57.65949 -20.179457
57.669408 -20.177538
57.702715 -20.211515
我想将此数据帧转换为以下格式:
longitude latitude emp emp2
57.408999 -20.208104 1 0.1
57.667991 -20.13641 11 1.1
57.539122 -20.103416 16 1.6
57.502332 -20.124798 10 1
57.414653 -20.261872 1 0.1
57.65949 -20.126768 2 0.2
57.468383 -20.223031 17 1.7
57.754464 -20.25823 9 0.9
57.754464 -20.25823 13 1.3
57.680745 -20.121893 13 1.3
57.65949 -20.179457 4 0.4
57.669408 -20.177538 3 0.3
57.702715 -20.211515 1 0.1
emp
将是一个新的列,它是每个经度和纬度的频率。因此,我的数据帧现在只有唯一的经度和纬度以及它们各自的计数。
emp2
就是emp
的值除以10
使用R可以做到这一点吗?如果可以,我们将非常感谢您的帮助。
由于我是R的新手,我对从哪里开始解决这个问题感到困惑。
发布于 2018-08-21 05:30:37
使用dplyr
的一种简单方法是
library(dplyr)
df %>%
group_by(longitude, latitude) %>%
summarise(emp = n(),
emp2 = emp/10)
发布于 2018-08-21 06:57:46
使用aggregate
的替代base R
解决方案。
attach(df)
df <- aggregate(df, by=list(longitude, latitude), FUN=length)
colnames(df) <- c('longitude', 'latitude', 'emp', 'emp2')
df$emp2 <- df$emp2 / 10
https://stackoverflow.com/questions/51942072
复制相似问题