首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R数据中的和频率和联接标签

R数据中的和频率和联接标签
EN

Stack Overflow用户
提问于 2014-07-19 11:05:32
回答 1查看 73关注 0票数 0

我有一张这样的桌子:

代码语言:javascript
运行
复制
    Var1 Freq
1   6    1
2   7    4
3   8    1
4   10   2
5   11   6
6   12   1
7   13   2
8   15   1

我想要的是产生“回收箱”,换句话说,和频率有5-9,10-14,15-19.诸若此类。这样得到:

代码语言:javascript
运行
复制
    Var1    Freq
1   5-9     6
2   10-14   11
3   15-19   ...

不知道该怎么做..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-19 11:12:00

试试cut

代码语言:javascript
运行
复制
dat <- structure(list(Var1 = c(6L, 7L, 8L, 10L, 11L, 12L, 13L, 15L), 
Freq = c(1L, 4L, 1L, 2L, 6L, 1L, 2L, 1L)), .Names = c("Var1", 
"Freq"), class = "data.frame", row.names = c("1", "2", "3", "4", 
"5", "6", "7", "8"))


with(dat, aggregate(Freq, 
    list(Var1=cut(Var1, breaks=c(4,9,14,19),labels=c('5-9',  '10-14', '15-19'))),
       FUN=sum))
#   Var1  x
# 1   5-9  6
# 2 10-14 11
# 3 15-19  1

更新

如果你有很多休息时间:

代码语言:javascript
运行
复制
res1 <- with(dat, aggregate(Freq, list(Var1=cut(Var1, breaks=seq(4,19, by=5))),FUN=sum))

创建标签:

代码语言:javascript
运行
复制
library(stringr)
indx1 <- scan(text=str_trim(gsub("[[:punct:]]+"," ",res1$Var1)),sep="")

transform(res1,Var1=apply(rbind(indx1[c(T,F)]+1,indx1[c(F,T)]),2,paste,collapse="-"))
#   Var1  x
#1   5-9  6
#2 10-14 11
#3 15-19  1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24839677

复制
相关文章

相似问题

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