按R中每个数据帧中的单个列对所有数据帧进行排序

时间:2015-08-20 14:29:41

标签: r sorting dataframe

我有一个1:323的数据帧列表,它们是mrns [[1]]:mrns [[323]],每个数据帧都有一个名为" ar.cat"的列。它将来自另一列ar.value的连续数据分类。

> dput(head(mrns[[1]]))
ar.value = c(32.8, 32.8, 32.8, 
32.8, 32.8, 32.8), ar.cat = c("HIGH", "HIGH", "HIGH", "HIGH", 
"HIGH", "HIGH")),

> dput(head(mrns[[2]]))
ar.value = c(2.7, 2.7, 2.7, 2.7, 2.7, 
2.7), ar.cat = c("LOW", "LOW", "LOW", "LOW", "LOW", "LOW"
)), 

" ar.cat"具有低,中和高的值。每个数据帧具有相同的值" ar.cat"对于数据帧的所有行。因此,对于数据帧1中的每一行,它将具有"高"值,然后对于数据帧2中的每一行,它将具有"低"价值等。

我试图通过" ar.cat"来命令所有323个数据帧。列,所以第一个但是很多数据帧(1:105)的值为"高",下一个(106:207)的值为"低",然后是下一个(?) 208:323)具有" medium"的值。我假设字母顺序最简单。

到目前为止我的内容如下:

sortCat <- function(df) {
  sort(df$ar.cat)
  return(df)
}

sorted <- lapply(mrns, sortCat)

但是这会订购每一个&#34; ar.cat&#34;每个数据框内的列,而不是所有数据帧之间的列。

有人有任何建议吗?

1 个答案:

答案 0 :(得分:3)

您可以尝试使用sapply:

order(sapply(mrns, function(x){unique(x$ar.cat)}))

但我认为只有你的字符串是字符而不是因素

才有效