Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 排序有问题吗_R_Sorting_Dataframe - Fatal编程技术网

R 排序有问题吗

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

我有这样一个数据帧(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       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。