相关疑难解决方法(0)

如何按所有列排序矩阵

好吧,我陷入了一个愚蠢的循环中.我已经阅读了如何通过列对数据框进行排序的有用想法,但还需要一个提示.我想要一个带有任意列数的矩阵的函数,并按顺序对所有列进行排序.例如,对于foo具有N列的矩阵,相当于foo[order(foo[,1],foo[,2],...foo[,N]),].我很乐意使用withby构造,并在必要时定义colnames我的矩阵,但我无法弄清楚如何自动收集order(或with)的参数.或者,我应该说,我可以用它paste然后构建整个血腥的字符串call,但我确信有一种更简单的方法.

sorting r matrix

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

如何按字母顺序对数据框的行进行排序?

我想c按字母顺序排序if x[i]== x[i+1]。我使用了order()函数,但它也改变了x列。我想订购整行:

 best <- function(state){
 HospitalName<-vector()
 StateName<-vector()
 HeartAttack<-vector()

  k<-1

  outcome<-read.csv("outcome-of-care-measures.csv",colClasses= "character")

 temp<-(outcome[,c(2,7,11,17,23)])

for (i in 1:nrow(temp)){
 if(identical(state,temp[i,2])==TRUE){
    HospitalName[k]<-temp[i,1]
    StateName[k]<-temp[i,2]
    HeartAttack[k]<-as.numeric(temp[i,4])
    k<-k+1
     }}
    frame<-data.frame(cbind(HospitalName,StateName,HeartAttack))


  library(dplyr)
  frame %>%
  group_by(as.numeric(as.character(frame[,3]))) %>%
  arrange(frame[,1])
    }

  Output:
                               HospitalName StateName HeartAttack
 1              FORT DUNCAN MEDICAL CENTER        TX         8.1
 2         TOMBALL REGIONAL MEDICAL CENTER        TX         8.5
 3        CYPRESS FAIRBANKS MEDICAL CENTER        TX         8.7
 4                  DETAR HOSPITAL NAVARRO        TX         8.7
 5                  METHODIST HOSPITAL,THE        TX         8.8
 6         MISSION REGIONAL MEDICAL CENTER …
Run Code Online (Sandbox Code Playgroud)

sorting r char alphabetical

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

使用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 - 根据模式重新排列数据

我想根据特定的简单模式重新排序我的数据。

我只想重新排列我的数据,其中一行Female,一行Male,依次保留householdid

数据如下:

  householdid.x    idno   isex iage
1        101366 1013661 FEMALE   29
2        101366 1013662   MALE   36
3        102481 1024812   MALE   39
4        102481 1024811 FEMALE   29
5        103755 1037552   MALE   36
6        103755 1037551 FEMALE   31
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做。

让我们说这FEMALE是第一位的。我正在寻找的输出很简单:

  householdid.x    idno   isex iage
1        101366 1013661 FEMALE   29
2        101366 1013662   MALE   36
4        102481 1024811 FEMALE   29
3        102481 1024812   MALE   39
6        103755 1037551 FEMALE   31
5        103755 1037552   MALE …
Run Code Online (Sandbox Code Playgroud)

sorting r

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

Sorting one variable in a data frame by id

I have a data frame with lot of company information separated by an id variable. I want to sort one of the variables and repeat it for every id. Let's take this example,

df <- structure(list(id = c(110, 110, 110, 90, 90, 90, 90, 252, 252
), var1 = c(26, 21, 54, 10, 18, 9, 16, 54, 39), var2 = c(234, 
12, 43, 32, 21, 19, 16, 34, 44)), .Names = c("id", "var1", "var2"
), row.names = c(NA, -9L), class …
Run Code Online (Sandbox Code Playgroud)

sorting grouping r

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

按r中的列对数据帧进行排序

可能重复:
如何按R中的列对数据帧进行排序

我试图按几列对data.frame进行排序

df<-data.frame("Sp1"=c(7,4,2),"Sp2"=c(6,2,1))
row.names(df)<-c("A01","A02","A03")

    Sp1 Sp2
A01   7   6
A02   4   2
A03   2   1

#I am using    

df[with(df, order("Sp1"))]
Run Code Online (Sandbox Code Playgroud)

但这没有任何作用.有什么想法吗?谢谢

r

3
推荐指数
1
解决办法
1397
查看次数

在 R 中获取 data.frame 的样本

我在 R 中有以下数据框:

id<-c(1,2,3,4,10,2,4,5,6,8,2,1,5,7,7)
date<-c(19970807,19970902,19971010,19970715,19991212,19961212,19980909,19990910,19980707,19991111,19970203,19990302,19970605,19990808,19990706)
spent<-c(1997,19,199,134,654,37,876,890,873,234,643,567,23,25,576)
df<-data.frame(id,date,spent)
Run Code Online (Sandbox Code Playgroud)

我需要以提取所有客户观察结果的方式随机抽取 3 个客户(基于 id)。

r subset dataframe

3
推荐指数
1
解决办法
1992
查看次数

按 R 中的所有列对数据框进行排序

对于具有任意列数的任意矩阵或数据框x,我想这样做:

x=x[order(x[,1], x[,2], ..., x[,ncol(x)]),]
Run Code Online (Sandbox Code Playgroud)

也就是说,我想按第一列排序,然后按第二列排序,...,然后按最后一列排序。这里关于排序的扩展讨论似乎不包含解决方案。这是我的解决方案,它违反了fortune(106)

sortarray = function(x){
    k = ncol(x)
    com = paste("x = x[order(x[,", paste(1:k, collapse = "],x[,"), "]),]", sep = "")
    eval(parse(text = com))
    return(x)}

x = sortarray(x)
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但是没有更干净的方法吗?

编辑重复数据删除澄清: 这个问题与建议的重复问题有很大不同(至少对我来说)。上一个问题涉及您明确指定要排序的列的情况。就我而言,我希望自动选择列(特别是所有列),而不是必须在排序命令中键入每个列名称。下面的答案解决了我的问题,与上一个问题的任何答案不同。

r

3
推荐指数
1
解决办法
824
查看次数

如何根据data.frame的顺序排序因子级别(而不是按字母顺序)

基于这个问题,我点了date.frame dd有两个因素bx

dd <- data.frame(b = factor(c("Hi", "Med", "Hi", "Low"), levels = c("Low", "Med", "Hi"), ordered = TRUE),
             x = factor(c("A", "D", "A", "C")), 
             y = c(8, 3, 9, 9),
             z = c(1, 1, 1, 2))

dd <- dd[with(dd, order(b, x)), ]
   b x y z
 Low C 9 2
 Med D 3 1
  Hi A 8 1
  Hi A 9 1
Run Code Online (Sandbox Code Playgroud)

级别的顺序dd$x不反映dd $ x的实际顺序,但是按字母顺序排列.

levels(dd$x)
[1] "A" "C" "D"
Run Code Online (Sandbox Code Playgroud)

我想要与data.frame中相同的级别顺序,即"C","D","A"

我当然可以 …

r factors

3
推荐指数
1
解决办法
2901
查看次数

R中的数据框同时按多列排序

所以,我有一个大型数据框(7000行),其排列方式如下:

head(mx)

                        Stem Progenitor   Astrocyte   Neuron genename
ENSRNOG00000000007 0.0517698   0.700234  0.11753300 4.591050     Gad1
ENSRNOG00000000010 0.0536043   0.471518  0.00741803 2.280760    Cbln1
ENSRNOG00000000012 0.0163017   0.285178  1.89533000 0.268405    Tcf15
ENSRNOG00000000024 2.7904200   0.703727 13.96940000 4.944650    HEBP1
ENSRNOG00000000028 2.5059900   2.563040  4.83952000 0.840013     Nde1
ENSRNOG00000000029 1.6204500   2.928300 15.58360000 1.750350    Myh11
Run Code Online (Sandbox Code Playgroud)

我需要对此数据帧进行排序,使其按前四列中的任何值从高到低排序.因此,对于该示例,这5行的排序将是:

                        Stem Progenitor   Astrocyte   Neuron genename
ENSRNOG00000000029 1.6204500   2.928300 15.58360000 1.750350    Myh11
ENSRNOG00000000024 2.7904200   0.703727 13.96940000 4.944650    HEBP1
ENSRNOG00000000028 2.5059900   2.563040  4.83952000 0.840013     Nde1
ENSRNOG00000000007 0.0517698   0.700234  0.11753300 4.591050     Gad1
ENSRNOG00000000010 0.0536043   0.471518  0.00741803 2.280760 …
Run Code Online (Sandbox Code Playgroud)

sorting r dataframe

3
推荐指数
1
解决办法
1795
查看次数

标签 统计

r ×10

sorting ×5

dataframe ×2

alphabetical ×1

char ×1

data.table ×1

factors ×1

grouping ×1

matrix ×1

subset ×1