问题设置 :创建一个函数,将 ID 列选择的多个 CSV 文件合并为 1 个 csv,然后根据 ID 创建观察数量的输出。
预期的:
complete("specdata", 30:25) ##notice descending order of IDs requested
## id nobs
## 1 30 932
## 2 29 711
## 3 28 475
## 4 27 338
## 5 26 586
## 6 25 463
我得到:
> complete("specdata", 30:25)
id nobs
1 25 463
2 26 586
3 27 338
4 28 475
5 29 711
6 30 932
这是“错误的”,因为它已按 id 排序。
我从中读取的 CSV 文件确实具有按降序排列的数据。我的片段:
dfTable<-read.csv("~/progAssign1/specdata/tmpdata.csv")
ccTab<-complete.cases(dfTable)
xTab3<-as.data.frame(table(dfTable$ID[ccTab]),)
colnames(xTab3)<-c("id","nobs")
据我所知,第三行是排序发生的地方。我打破了表达式,它发生在 table() 调用中。我没有找到任何我可以传递的选项或参数来制作类似 sort=FALSE 的东西。你会想...
反正。任何帮助表示赞赏!
最佳答案
所以,问题出在 table
的输出中, 默认情况下排序。例如:
> r = sample(5,15,replace = T)
> r
[1] 1 4 1 1 3 5 3 2 1 4 2 4 2 4 4
> table(r)
r
1 2 3 4 5
4 3 2 5 1
如果你想按照第一次出现的顺序,重新编码
table
会让你的手有点脏。功能:unique_r = unique(r)
table_r = rbind(label=unique_r, count=sapply(unique_r,function(x)sum(r==x)))
table_r
[,1] [,2] [,3] [,4] [,5]
label 1 4 3 5 2
count 4 5 2 1 3
关于r - 有没有办法阻止表格在 R 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24842157/