在变量中分配列名时对数据框进行排序

数据挖掘 r
2022-02-20 10:36:46

我是 R 新手,因此我的问题可能是基本的。我尝试在此处发布之前研究答案,但没有得到我正在寻找的答案。

我正在尝试根据某些列订购数据框。该列是动态的,取决于某个“结果”,该“结果”来自“有效结果”向量。

validoutcomes <- c("A","B","C")

如果结果是“A”,那么我应该从第 11 列读取数据。对于“B”,它的第 17 列和“C”它是 23。

我重命名了这些列,以便更容易阅读并与有效结果保持一致。“输入”是我来自 CSV 的源数据。

colnames(input)[11] <- validoutcomes[1] colnames(input)[17] <- validoutcomes[2] colnames(input)[23] <- validoutcomes[3]

然后我尝试使用

statelist <- statelist[order(statelist$outcome)]

有任何想法吗?

2个回答

你的第一次尝试更准确。由于我没有您的数据,我将只使用 iris 数据集,

 iris_ordered_on_Sepal_Length <- iris[order(iris$Sepal.Length),]

或者,如果您使用data.table

iris_dt <- data.table(iris)
iris_dt[order(Sepal.Length)]

data.table 也会使重命名更容易,

setnames(input, c("colname_11, "colname_17", "colname_23"), validoutcomes[1 : 3])

好的,我找到了可能的答案。我不确定这是否是最好的答案,但它对我有用。

由于$用于调用 colnames,R 正在寻找列名称为outcome. 然而,它所需要的只是方括号[]我更换了它,到目前为止似乎对我有用。

statelist <- statelist[order(statelist[outcome])]

我仍然很想知道是否有更好的解决方案,或者是否有人认为我的观察有问题。