如何将命名向量更改为保留名称的数据框?
How do I change a named vector to a data frame retaining the names?
执行函数后我有以下数据结构:
A B C D E
92.08 90.68 54.09 92.87 97.40
F G H I J ...
24.52 67.24 15.63 22.33 45.10 ...
作为最终结果,我希望将数据放在一个简单的数据框中,其中字母作为行,值作为列。以下工作,虽然我很好奇这是否是最优雅的方式(?):
output <- data.frame(output)
output <- data.frame(rownames(output), rowSums(output))
colnames(output) <- c("Category", "Value")
output
output %>% arrange(desc(output))
如果您有更好的想法,请随时纠正我。
dplyr
解决方案表示赞赏。
谢谢!
正如@Axeman 在评论中所说,您有一个命名向量。将其转换为数据框的最简单方法是使用基础 R.
中的 stack
-函数
一些示例数据:
output <- setNames(c(92.08,90.68,54.09,92.87,97.40), LETTERS[1:5])
看起来像:
> output
A B C D E
92.08 90.68 54.09 92.87 97.40
转换为数据帧:
df <- stack(output)
给出:
> df
values ind
1 92.08 A
2 90.68 B
3 54.09 C
4 92.87 D
5 97.40 E
获取问题中指定的列名和列顺序:
df <- setNames(stack(output)[2:1], c('Category','Value'))
给出:
Category Value
1 A 92.08
2 B 90.68
3 C 54.09
4 D 92.87
5 E 97.40
执行函数后我有以下数据结构:
A B C D E
92.08 90.68 54.09 92.87 97.40
F G H I J ...
24.52 67.24 15.63 22.33 45.10 ...
作为最终结果,我希望将数据放在一个简单的数据框中,其中字母作为行,值作为列。以下工作,虽然我很好奇这是否是最优雅的方式(?):
output <- data.frame(output)
output <- data.frame(rownames(output), rowSums(output))
colnames(output) <- c("Category", "Value")
output
output %>% arrange(desc(output))
如果您有更好的想法,请随时纠正我。
dplyr
解决方案表示赞赏。
谢谢!
正如@Axeman 在评论中所说,您有一个命名向量。将其转换为数据框的最简单方法是使用基础 R.
中的stack
-函数
一些示例数据:
output <- setNames(c(92.08,90.68,54.09,92.87,97.40), LETTERS[1:5])
看起来像:
> output A B C D E 92.08 90.68 54.09 92.87 97.40
转换为数据帧:
df <- stack(output)
给出:
> df values ind 1 92.08 A 2 90.68 B 3 54.09 C 4 92.87 D 5 97.40 E
获取问题中指定的列名和列顺序:
df <- setNames(stack(output)[2:1], c('Category','Value'))
给出:
Category Value 1 A 92.08 2 B 90.68 3 C 54.09 4 D 92.87 5 E 97.40