首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将此数据转换为R格式而不是excel格式

如何将此数据转换为R格式而不是excel格式
EN

Stack Overflow用户
提问于 2017-01-23 18:27:01
回答 1查看 69关注 0票数 2
代码语言:javascript
复制
library(plyr)

data <- data.frame(Age = as.character(c("1-5", "1-5", "6-10", "6-10",     "11-15", "11-15")),
                                  Gender = as.character(rep(c("Male","Female"),3)),
               "2001" = c(10000,9000,15000,14000,17000,15000))

data$x2002 <- data$X2001  + 1000

data

data2 <- data.frame(Age = rep(data$Age,2), Gender = rep(data$Gender,2)) %>% arrange(Gender) %>%
mutate(year = rep(c("2001", "2002"), each = 3, times = 2), rank = rep(seq(1,3), times = 4)) 


data2 <- data2 %>% mutate(N  = c(9000,14000,15000, 10000,15000,16000, 10000, 15000, 17000, 11000, 16000, 18000))

data2

目前,我已经在excel中做了大量的手工工作,如果可能的话,我正在寻找一个更容易的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 18:30:46

我们可以使用gather将其转换为'long‘格式,然后进行转换

代码语言:javascript
复制
library(dplyr)
library(tidyr)
gather(data, year, N, X2001:x2002) %>% 
        mutate(year = as.numeric(substring(year, 2))) %>%
        group_by(Gender, year) %>%
        mutate(rank = dense_rank(N)) %>%
        arrange(Gender, year, rank)
#     Age Gender  year     N  rank
#   <fctr> <fctr> <dbl> <dbl> <int>
#1     1-5 Female  2001  9000     1
#2    6-10 Female  2001 14000     2
#3   11-15 Female  2001 15000     3
#4     1-5 Female  2002 10000     1
#5    6-10 Female  2002 15000     2
#6   11-15 Female  2002 16000     3
#7     1-5   Male  2001 10000     1
#8    6-10   Male  2001 15000     2
#9   11-15   Male  2001 17000     3
#10    1-5   Male  2002 11000     1
#11   6-10   Male  2002 16000     2
#12  11-15   Male  2002 18000     3
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41804066

复制
相关文章

相似问题

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