gpt4 book ai didi

R:查找列总和最大的列

转载 作者:行者123 更新时间:2023-12-04 07:23:12 25 4
gpt4 key购买 nike

我想找到列总和最大的列。我在想类似的事情:

threeLargest = colnames(sort(colSums(data[,2:length(data)]), 
decreasing = TRUE)[1:3])

但是 colnames只给 NULLsort(colSums...命令。

原因是我希望能够引用列中的值并绘制它。我在想,必须有一个更面向 R 的解决方案,而不是遍历列并保持对最大列的计数。

我有 example_csv_file.csv :
date,column1,column2,column3,column4
2013-12-09,0,0,0,2
2013-12-10,0,0,0,2
2013-12-11,0,0,0,2
2013-12-12,0,0,0,2
2013-12-13,0,0,0,2
2013-12-14,0,1,7,2
2013-12-15,2,15,36,2
2013-12-16,5,10,28,2
2013-12-17,1,2,39,2
2013-12-18,2,3,34,2

我以这种方式导入:
data = read.csv(file = 'example_csv_file.csv', header = TRUE, sep = ",")

我可以按列总和对列进行排序,并获取前三名:
threeLargest = sort(colSums(data[,2:length(data)]), decreasing = TRUE)[1:3]

这给出:
> threeLargest
column3 column2 column4
144 31 20

但我需要获取列名,因为我在绘制列值时需要引用这些列。例如。这边走:
plot(data[,'column3'])

最好有一个我可以在循环中引用的顶级列表,如下所示:
plot(data[,namesOfThreeLargest[1]], type = 'n')
color = 1
for (column in namesOfThreeLargest)
{
lines(data[,column], col = color)
color = color + 1
}
legend("topleft", inset=.05, lty = 1, namesOfThreeLargest, col = seq(color))

如果我能以一种简洁的方式获得列的编号,我可以通过这种方式获得它的名称:
columnWithLargestColSum = colnames(data)[4]

我尝试以不同的方式导入文件,例如 read.table(file =... , read.data.frame(file =...as.matrix(read.csv(file =... ,看看是否 colnames然后工作,但它没有。事实上 colSums甚至不适用于 as.matrix一个因为条目是该方法的字符串。

谢谢!

编辑:

这是我采用的解决方案:

我用过 order()来自 Joris Meys我用了 names()来自 Ananda Mahto (请参阅下面的解决方案):
colCount = colSums(data[-1])
topThreeIds = order(colCount,decreasing=TRUE)[1:3] + 1 # From Joris
topThreeCols = names(data[topIds]) # From Ananda

请注意 + 1在第二行,因为我跳过了 date第一行中的列。通过在第二行添加一个,我得到了我想要的列的实际 id。

谢谢你们!

最佳答案

如果您查看 str您的 colSums 的输出步骤,你会看到它只是一个命名向量,而不是任何带有“列”的东西:

str(sort(colSums(data[,2:length(data)]), 
decreasing = TRUE)[1:3])
# Named num [1:3] 144 31 20
# - attr(*, "names")= chr [1:3] "column3" "column2" "column4"

因此,如果您想要“名称”,您应该将命令包裹在 names 中。而不是 colnames .

换句话说:
namesOfThreeLargest <- names(threeLargest)

从那里开始,现在我看到您只想绘制多条线图,您可以查看 matplot , 例如:
matplot(data[, namesOfThreeLargest], type="l")

关于R:查找列总和最大的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20679702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com