【问题标题】:Having issues using order function in R在 R 中使用 order 函数时遇到问题
【发布时间】:2014-05-05 22:02:19
【问题描述】:

我的 data.frame 是 stateData,当我执行 stateData[order(stateData$"heart failure"),] 时,heart failure 是列名,我将使用 heart failure 列返回我的数据框,该列的值增加如下:

10.0, 10.1, 10.3, 10.7, 15.0, 15.1, 15.9, 8.1, 8.3, 8.9, 9.0, 9.1

详情如下:
dput(head(stateData)) heart failure = structure(c(97L, 44L, 25L, 6L, 52L, 57L ), .Label = c("10.0", "7.2", "7.3", "7.4", "7.5", "7.6", "7.7", "7.8", "7.9", "8.0", "8.1", "8.2", "8.3", "8.4", "8.5", "8.6", "8.7", "8.8", "8.9", "9.0", "9.1", "9.2", "9.3", "9.4", "9.5", "9.6", "9.7", "9.8", "9.9", "Not Available"), class = "factor"),

为什么不一直排序呢?

感谢任何帮助!谢谢!

编辑:这是我的解决方案!明白了,谢谢大家的建议!

stateData[,"heart failure"] <- as.numeric(levels(stateData["heart failure"])[stateData[,"heart failure"]]) 
sortedData <- stateData[order(stateData[,"heart failure"]),]

【问题讨论】:

  • 没有看到你的数据,我最好的猜测是你的“心力衰竭”条目是字符。但是,您应该提供一个可重现的示例(提示:提供dput(head(stateData)) 的输出或列的子集以制作一个最小的可重现示例)。
  • @beginneR - 这会抛出一个错误,因为解释器会看到stateData$heart 然后吓坏了,因为有一些额外的文本只是闲逛。
  • @user1047260 如您所见,“不可用”值导致数据存储为因子而不是数值。你可以试试stateData$"heart failure" &lt;- as.numeric(stateData$"heart failure")
  • 这是一个畸形的因子变量。您需要检查您的数据管理程序。问题可能始于初始数据输入步骤。

标签: r function statistics


【解决方案1】:

stateData$"heart failure" 列是一个因素,所以当 R 对其进行排序时,它是按字母顺序排列的。如果您希望数据按数字排序,请尝试以下操作:

 stateData$"heart failure" <- as.numeric(levels(stateData$"heart failure"))[stateData$"heart failure"]
 stateData[order(stateData$"heart failure"),]

【讨论】:

  • 我想如果它不是简单的错误并且正确答案在 R-FAQ 中,它可以被称为“关闭”。
  • 啊,我明白你的意思了,@GSee。我没有考虑排名问题。 user1047260:我喜欢你的回答。我不知道您是如何读取数据的,但是这样做时使用 colClasses 并在读取数据时设置数据类型可能会消除对它的需要。即 read.csv("Data.csv", colClasses=c("character", "numeric"))
  • 劳拉,请根据常见问题编辑您的答案,即as.numeric(as.character(....))
猜你喜欢
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
相关资源
最近更新 更多