在R中:根据另一个表中的数据对数据帧中的行进行重新排序

史蒂夫·琼斯

我有一张桌子,如下所示:

tab1 <- as.table(matrix(c(8,6,9,0,8,4,0,12,7,10), ncol = 2, byrow = FALSE, 
   dimnames = list(site = c("beta", "alpha", "gamma", "theta", "delta"),
  count = c("low", "high"))))
> tab1
        count
site    low high
beta    8    4
alpha   6    0
gamma   9   12
theta   0    7
delta   8   10

以及将网站名称映射到siteID的data.frame:

data.frame(site = c("alpha", "beta", "gamma", "delta", "theta"), siteId = c(1102, 3154, 9000, 1101, 1103))
     site siteId
1   alpha   1102
2    beta   3154
3   gamma   9000
4   delta   1101
5   theta   1103

最后,我有一个data.frame,其中包含这些siteID和其他一些变量:

data.frame(siteId = c(1101, 1102, 1103, 3154, 9000), treatment = c("A", "B", "C", "E", "F"))
  siteId treatment
1   1101         A
2   1102         B
3   1103         C
4   3154         E
5   9000         F

我需要做的就是以对tab1中的行进行排序的相同方式对最后一个数据帧中的列进行排序,因此它应该产生:

  siteId treatment
1   3154         E
2   1102         B
3   9000         F
4   1003         C
5   1001         A

在不进行复杂循环的情况下该如何做?实际的数据集非常大,因此循环将比我想要的花费更多的时间。

饼干面包师

您可以通过查看match不同数据帧中的ID来做到这一点顺便说一下,我将epsilon数据框更改atheta,因为其中没有epsilon tab1

tab1 <- as.table(matrix(c(8,6,9,0,8,4,0,12,7,10), ncol = 2, byrow = FALSE, 
                                                dimnames = list(site = c("beta", "alpha", "gamma", "theta", "delta"),
                                                                                count = c("low", "high"))))


a = data.frame(site = c("alpha", "beta", "gamma", "delta", "theta"), siteId = c(1102, 3154, 9000, 1101, 1103))
b = data.frame(siteId = c(1101, 1102, 1103, 3154, 9000), treatment = c("A", "B", "C", "E", "F"))

# put a in the order of tab1
a = a[match(a$site,rownames(tab1)),]

# put b in order of a
b = b[match(a$siteId, b$siteId),]

> b
#  siteId treatment
#4   3154         E
#2   1102         B
#5   9000         F
#3   1103         C
#1   1101         A

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据R中另一个排序后的列值对数据框进行排序

根据另一个定制顺序的列对数据框中的列对进行排序

如何根据熊猫中另一个数据框中的列对数据框进行排序?

如何基于基础R中的另一个数据帧对数据帧进行子集

根据另一个表中的数据对过滤后的表进行排序

将数据帧中的每一行与 r 中另一个数据帧中的每一行进行匹配

如何按R中的另一个数据框对数据框中的列顺序进行排序?

R:对数据框中的行进行重新排序

根据另一个因子列对R数据框中的因子列进行排序

根据另一个数据框中的信息对数据框进行分类

根据Python中另一个数据框的列对一个数据框的行进行排序(重复的列)

根据另一个数据帧在R数据帧中创建变量

在R中,如何根据另一个数据帧中的范围对一个数据帧中的值进行分类?

根据另一个数据帧中存在的阈值对数据帧的选定列执行操作

用Python中的另一个数组对数组的行进行排序

用Python中的另一个数组对数组的行进行排序

如何通过根据另一个数据帧的行名的顺序映射一个数据帧的列名来对R中的数据帧进行排序?

如何基于另一个数据帧中的值对数据帧进行子集设置?

根据另一个数组中的排序索引对数组重新排序

MySQL-是否可以根据另一个表中的数据对一个表中的数据进行排序?

重新排序 Pandas 数据帧以匹配另一个数据帧中的列元素

根据R中另一个数据帧中的行为数据帧中的行设置子集

通过部分匹配r中的另一个数据帧来对数据帧进行子集设置(对python / pandas解决方案开放)

根据数据框中的另一个值对数据框中的值进行划分

根据另一个数组中定义的排序顺序对数组进行排序

根据向量对数据帧行进行排序,优先级顺序包含表中未找到的值

使用另一个数据帧按组对一个数据帧中的n行进行采样

R-根据数据帧中的变量和另一个矩阵的值对矩阵进行子集

根据Javascript(React)中另一个数组中的数据重新排序一个对象数组