繁体   English   中英

用R中的因子变量级别切割函数

[英]Cut Function With Levels of Factor Variable in R

我有一个简单的数据框,有两个变量,RowID和Country:

RowID    Country
1         USA
2         Spain
3         USA
4         USA
5         Spain
6         Spain

我可以使用cut函数为完整数据创建bin

df$Bin<-cut(df$RowID,breaks=3)

哪个产生:

RowID   Country    Bin
1         USA      1
2         Spain    1
3         USA      2
4         USA      2
5         Spain    3    
6         Spain    3

但是,是否可以在变量Country的每个级别中应用cut函数?
换句话说,结束于:

RowID   Country    Bin
1         USA      1
2         Spain    1
3         USA      2
4         USA      3
5         Spain    2    
6         Spain    3

您可以使用dplyr执行以下操作

library(dplyr)
df %>%
  group_by(Country)          %>%
  mutate(Bin = row_number()) %>%
  ungroup

产量

##Source: local data frame [6 x 3]
##
##  RowID Country   Bin
##  (int)   (chr) (int)
##1     1     USA     1
##2     2   Spain     1
##3     3     USA     2
##4     4     USA     3
##5     5   Spain     2
##6     6   Spain     3

编辑

对于评论中提出的问题,关于如何将每个国家分成多个区域(例如,如果一个国家有100行要分解为10个区),可以使用以下代码

break_count <- 2
df3 %>%
  group_by(Country)                            %>%
  mutate(Bin = cut(row_number(), break_count)) %>%
  ungroup

上面使用了break_count 2,但可以更改。 只有mutate线与解决方案的第一个变体不同。

我们可以使用ave

 df$Bin <- with(df, ave(RowID, Country, FUN=seq_along))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM