相关疑难解决方法(0)

在列表上订购

我遇到了一个应用程序,我需要按列号对data.frame进行排序,而且通常的解决方案似乎都不允许这样做.

上下文正在创建一个as.data.frame.by方法.由于by对象将其最后一列作为值列,而将第一列ncol-1列作为索引列. melt返回它向后排序 - 索引3,然后索引2,然后索引1.为了兼容latex.table.by我想要向前排序.但是我在以足够通用的方式做这件事时遇到了麻烦.下面函数中注释掉的行是迄今为止我最好的尝试.

as.data.frame.by <- function( x, colnames=paste("IDX",seq(length(dim(x))),sep="" ), ... ) {
  num.by.vars <- length(dim(x))
    res <- melt(unclass(x))
  res <- na.omit(res)
    colnames(res)[seq(num.by.vars)] <- colnames
    #res <- res[ order(res[ , seq(num.by.vars)] ) , ] # Sort the results by the by vars in the heirarchy given
    res
}

dat <- transform( ChickWeight, Time=cut(Time,3), Chick=cut(as.numeric(Chick),3) )
my.by <- by( dat, with(dat,list(Time,Chick,Diet)), function(x) sum(x$weight) )
> as.data.frame(my.by)
            IDX1         IDX2 IDX3 value
1 …
Run Code Online (Sandbox Code Playgroud)

r

7
推荐指数
1
解决办法
3602
查看次数

如何在R中按组排序列

我有一个data.frame(比如说"df")如下所示:

Hospital.Name | State | Mortality.Rate
'hospital_1'   | 'AA'  | 0.2
'hospital_2'   | 'AA'   | 0.3
'hospital_3'   | 'BB'  | 0.3
'hospital_4'   | 'CC'  | 0.5
Run Code Online (Sandbox Code Playgroud)

(Hospital.Name是唯一的)

现在我想通过"State"命令"Mortality.Rate"组,即将速率命令在某个状态.如果费率存在平局,那么"Hospital.Name"用于解决平局.

我想到了"order()"和"tapply()"函数.我这样编码:

tapply(df$Mortality.Rate, df$State, order, df$Hospital.Name, na.last=NA)
Run Code Online (Sandbox Code Playgroud)

但是,弹出了"参数长度不同"的错误.当"订单"功能应用于切片"费率"时,订单的第二个参数(即df $ Hospital.Name)不会被切片.

我如何将第二个参数(用于解决排序中的关系)传递给tapply()或者是否还有其他方法?

r

7
推荐指数
2
解决办法
2万
查看次数

如何在R中对数据框进行排序

我是R的新手,想要对称为"权重"的数据框进行排序.以下是详细信息:

>str(weights)
'data.frame':   57 obs. of  1 variable:
 $ attr_importance: num  0.04963 0.09069 0.09819 0.00712 0.12543 ...

> names(weights)
  [1] "attr_importance"

> dim(weights)
  [1] 57  1

> head(weights)
        attr_importance
make        0.049630556
address     0.090686474
all         0.098185517
num3d       0.007122618
our         0.125433292
over        0.075182467
Run Code Online (Sandbox Code Playgroud)

我想通过降低attr_importance的顺序排序,但我也希望保留相应的行名称.

我试过了:

> weights[order(-weights$attr_importance),]
Run Code Online (Sandbox Code Playgroud)

但它给了我一个"数字"背面.

我想要一个数据帧 - 按attr_importance排序,并且CORRESPONDING行名称保持不变.我怎样才能做到这一点?

提前致谢.

sorting r dataframe

6
推荐指数
2
解决办法
8904
查看次数

按降序排列data.frame的所有列

我现在正在摆弄这一段时间,但找不到合理的解决办法.

我想按降序排序data.frame的所有列.

示例数据例如:

CustomData <- data.frame(Value1=rnorm(100,1,2), Value2=rnorm(100,2,3),
                         Value3=rexp(100,5), Value4=rexp(100,2))
Run Code Online (Sandbox Code Playgroud)

适用于一栏:

CustomData[order(CustomData$Value1, decreasing=FALSE), ]
Run Code Online (Sandbox Code Playgroud)

如何以合理的方式按递减/递增顺序对所有列数据进行排序?谢谢.

我也在其他地方尝试了这样的东西,但是没有按照规定工作.

CustomData[do.call(order, as.list(CustomData)),] 
Run Code Online (Sandbox Code Playgroud)

r

6
推荐指数
2
解决办法
1万
查看次数

R 中的函数重新排序和排序值

我正在尝试以下功能:

stest <- data.frame(group=c("John", "Jane", "James"), mean=c(3, 5, 1))
transform(stest, group = reorder(group, mean))
Run Code Online (Sandbox Code Playgroud)

并期望输出按 排序mean。相反,我得到:

  group mean
1  John    3
2  Jane    5
3 James    1
Run Code Online (Sandbox Code Playgroud)

也就是说,与原始数据帧中的顺序相同。

我错过了什么吗?如何通过数据框的数值变量之一正确排序数据框?

周围的建议是关于使用的reorder,但我无法使其按预期工作。任何加载的包都会干扰吗?

sorting r

5
推荐指数
1
解决办法
4万
查看次数

data.table如何在键列上排序NA值?

使用data.table,假设我使用两列设置​​密钥,其中一列缺少值.数据表似乎将NA值排序为第一个值.

require(data.table)
set.seed(919)

# Create sample data
dt <- data.table(
  key1 = rep(1:10, each = 10),
  key2 = rep_len(letters, 100)
  )

# Set some key2 values to missing
dt[sample(1:100, 10), "key2"] <- NA

# Set key (sort)
setkeyv(dt, c("key1", "key2"))
dt
# 1:    1   NA
# 2:    1    a
# 3:    1    b
# 4:    1    c
# 5:    1    d
# 6:    1    f
# 7:    1    g
# 8:    1    h
# 9:    1    i
# …
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
1
解决办法
708
查看次数

使用caret和data.table创建数据分区

我在R中有一个data.table,我想用插入包

set.seed(42)
trainingRows<-createDataPartition(DT$variable, p=0.75, list=FALSE)
head(trainingRows) # view the samples of row numbers
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用data.table选择行.相反,我必须转换为data.frame

DT_df <-as.data.frame(DT)
DT_train<-DT_df[trainingRows,]
dim(DT_train)
Run Code Online (Sandbox Code Playgroud)

data.table替代方案

DT_train <- DT[.(trainingRows),] requires the keys to be set.
Run Code Online (Sandbox Code Playgroud)

除了转换为data.frame之外还有更好的选择吗?

r data.table r-caret

5
推荐指数
2
解决办法
3406
查看次数

基于多列对Data.Table进行排序

考虑下面的数据表:

DT <- data.table(a=c(1,2,4,3,5), b=c(3:5,NA,2), c=c(2,1,NA,NA,3)) 
DT
   a  b  c
1: 1  3  2
2: 2  4  1
3: 4  5 NA
4: 3 NA NA
5: 5  2  3
Run Code Online (Sandbox Code Playgroud)

我想根据第 3 列和第 1 列对行进行排序。我可以使用:

DT[order(DT[,3],DT[,1])]

   a  b  c
1: 2  4  1
2: 1  3  2
3: 5  2  3
4: 3 NA NA
5: 4  5 NA
Run Code Online (Sandbox Code Playgroud)

但是,如果 DT 有很多列并且假设我想根据第 1 到第 i 列对它们进行排序,那么将其写为:

DT[order(DT[,1], DT[,2], DT[,3], ... DT[,i])]
Run Code Online (Sandbox Code Playgroud)

相反,我想提供列索引作为向量(见下文):

DT[order(DT[,c(1:i)])]
Run Code Online (Sandbox Code Playgroud)

但是,它不像我期望的那样工作,输出是:

DT[order(DT[,c(3,1)])]

     a  b  c
 1:  2 …
Run Code Online (Sandbox Code Playgroud)

sorting r data.table

5
推荐指数
1
解决办法
1345
查看次数

R knit kable 首先按一列排序行,然后再按另一列排序

大家好,新年快乐,

我有一张不同学习模型的准确性和 kappa 输出的表格,并使用 knit::kable 来显示它们。

我现在想首先按准确度(从顶部最高到底部最低)对模型(行)进行排序,然后在此排序中,根据从最高到最低的 Kappa 对行进行排序。因此,我希望将准确性作为最重要的订单标准,而将 Kappa 作为第二重要的标准。表中还有其他列,但这是我想要对行进行排序的两列。

我在这方面相当缺乏经验,非常感谢您的帮助。我也对其他在 RMarkdown 中生成漂亮表格的函数/库持开放态度,这可以帮助我解决这个问题。

谢谢你,最好的,corkinabottle

r knitr r-markdown kable

5
推荐指数
1
解决办法
3117
查看次数

使用data.table同时进行顺序,行过滤和列选择

我试图在R中的一行中执行多个步骤,以从具有多个条件的data.table(dt)中选择值.

例如:

set.seed(123)
dt <- data.table(id = rep(letters[1:2],2),
             time = rnorm(4),
             value = rnorm(4)*100)

#    id        time      value
# 1:  a -0.56047565   12.92877
# 2:  b -0.23017749  171.50650
# 3:  a  1.55870831   46.09162
# 4:  b  0.07050839 -126.50612

# Now I want to select the last (maximum time) value from id == "a"
# My pseudo data.table code looks like this

dt[order(time) & id == "a" & .N, value]
# [1] 12.92877 46.09162  
Run Code Online (Sandbox Code Playgroud)

而不是获取我想要的两个值只有最后一个值(具有更高的时间值).

如果我一步一步地做到这一点:

dt <- dt[order(time) & id …
Run Code Online (Sandbox Code Playgroud)

r data.table

4
推荐指数
2
解决办法
1339
查看次数

标签 统计

r ×10

data.table ×4

sorting ×3

dataframe ×1

kable ×1

knitr ×1

r-caret ×1

r-markdown ×1