R 排序有问题吗
我有这样一个数据帧(df)R 排序有问题吗,r,sorting,dataframe,R,Sorting,Dataframe,我有这样一个数据帧(df) Name Value P 9.1 M 14.3 P 12.4 C 10.5 Name Value C 10.5 P 12.4 M 14.3 P 9.1 我试着用 df[order(df$value),] 得到这样的东西 Name Value P 9.1 M 14.3 P 12.4 C
Name Value
P 9.1
M 14.3
P 12.4
C 10.5
Name Value
C 10.5
P 12.4
M 14.3
P 9.1
我试着用
df[order(df$value),]
得到这样的东西
Name Value
P 9.1
M 14.3
P 12.4
C 10.5
Name Value
C 10.5
P 12.4
M 14.3
P 9.1
你能告诉我发生了什么事吗 这可能是一个因素。如果它是一个字符列,则会用引号打印,因此这是对排序的修复:
df[ order(as.numeric(as.character(df$value))), ]
df$Value
可能不是数字df[订单(如.numeric(df$Value)),]
应该是一个快速解决方案。但是您可能应该使用df$value来更改列类型class(df$value)
说什么?检查df$value
-它可能是字符。value
是否应该是value
顺序中的value
?另外,检查str(df)
查看其他列是否存在问题。因此,这里df$value首先从factor转换为字符,然后转换为数值。然后使用顺序对其进行排序。我说的对吗?没错。您从“由内而外”中读取函数调用的顺序。我想知道为什么我需要先将因子转换为字符,然后再转换为数字?为什么我不能直接从因子到数字?因为因子已经是数字了,除了它们是指向字符向量的数字指针。因此,如果您只执行“as.numeric”,则“10.2”<“2.0”为真。显然,您无意中构造了一个具有数字字符表示的向量。这是从Excel转换的典型fo数据,但可能是由于其他原因发生的。还有。。。。你为什么要和我争论呢?为什么你在评论中没有回答这些合理的要求呢?就这么做吧。谢谢你的澄清。我不是在争论。我只是想知道为什么我会这么做,因为我对r。