r 中同一列中的值序列

问题描述 投票:0回答:1

我正在尝试对同一列中的值进行洗牌,以便在输出表中具有不同的顺序

dat.stat.can.21$income.recode<-rep("40-99", length = dim(dat.stat.can.21)[1])
dat.stat.can.21$income.recode[dat.stat.can.21$HHInc<13]<-c("0-40")
dat.stat.can.21$income.recode[dat.stat.can.21$HHInc>24&dat.stat.can.21$HHInc<34]<-c("100+")
table(dat.stat.can.21$income.recode)

表格如下所示:

  0-40   100+  40-99 
 34670 200806 111532

我想在第三列中取100+,并在第二列中取40-99。我尝试这样做:

dat.stat.can.21$income.recode<-rep("0-40", length = dim(dat.stat.can.21)[1])
dat.stat.can.21$income.recode[dat.stat.can.21$HHInc>12 & dat.stat.can.21$HHInc<25]<-c("40-99")
dat.stat.can.21$income.recode[dat.stat.can.21$HHInc>24&dat.stat.can.21$HHInc<34]<-c("100+")
table(dat.stat.can.21$income.recode)

但它向我展示了同样的情况。有人知道该怎么做吗?

r sorting sequence
1个回答
0
投票

使用

OrderMixed
,因为你的表名是字符串

排序包含以下内容的字符串 嵌入数字,以便数字按数字顺序排序 比按字符值排序

如果这是您的数据

tab <- structure(c(`0-40` = 5L, `100+` = 3L, `40-99` = 2L), dim = 3L, 
dimnames = list(c("0-40", "100+", "40-99")), class = "table")

tab
 0-40  100+ 40-99 
    5     3     2

按数字内容对字符串进行排序可以得到

tab <- tab[DescTools::OrderMixed(names(tab))]

tab
 0-40 40-99  100+ 
    5     2     3
© www.soinside.com 2019 - 2024. All rights reserved.