首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将我的数据帧转换为R中的这种特定格式?

如何将我的数据帧转换为R中的这种特定格式?
EN

Stack Overflow用户
提问于 2018-08-21 13:25:27
回答 2查看 47关注 0票数 2

我当前在R中的数据框只有2列,即经度和纬度。大约有1500条记录(行),它们包含大量重复项。

数据帧摘录如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
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

我想将此数据帧转换为以下格式:

代码语言:javascript
代码运行次数:0
运行
复制
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的新手,我对从哪里开始解决这个问题感到困惑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-21 13:30:37

使用dplyr的一种简单方法是

代码语言:javascript
代码运行次数:0
运行
复制
library(dplyr)
df %>%
  group_by(longitude, latitude) %>%
  summarise(emp = n(), 
            emp2 = emp/10)
票数 2
EN

Stack Overflow用户

发布于 2018-08-21 14:57:46

使用aggregate的替代base R解决方案。

代码语言:javascript
代码运行次数:0
运行
复制
attach(df)
df <- aggregate(df, by=list(longitude, latitude), FUN=length)
colnames(df) <- c('longitude', 'latitude', 'emp', 'emp2')
df$emp2 <- df$emp2 / 10
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51942072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档