【发布时间】:2019-09-27 11:21:51
【问题描述】:
我的问题是我有下面的数据(输入表)。但我想要像输出表一样的表。到目前为止,我还没有找到解决方案来完成这项工作。
输入表: Input table
输出表:Output table
输入数据集:
set.seed(1)
Data <- data.frame(
set = (1:10),
Topic = sample(1:5),
Label = sample(c("A", "B", "C"), 10, replace = TRUE),
Score = sample(1:10)
)
Data
set Topic Label Score
1 1 1 C 3
2 2 2 B 5
3 3 3 A 10
4 4 4 A 9
5 5 5 A 2
6 6 1 A 8
7 7 2 B 4
8 8 3 B 1
9 9 4 B 6
10 10 5 C 7
Output data:
#In the columns I want the Topic (T).
T1 T2 T3 T4 T5
Label A 1 0 1 1 1
Label B 0 2 1 1 0
Label C 1 0 0 0 1
Score (avg) 5.5 4.5 5.5 7.5 4.5
Set (count) 2 2 2 2 2
我已经从 tidyr 尝试了扩展函数,但我得到了很多 NA 值,但我没有得到任何数字。
Data_1 <- spread(Data, key = Topic, value = Label
【问题讨论】:
-
你试过
t(data)吗?这将转置您的数据(即用列切换行)。这是一个有用的页面r-statistics.com/tag/transpose -
您对
spread做了什么尝试?有很多,很多 SO帖子关于转置数据,所以如果有一些原因这些帖子都没有帮助,那么能够看到会很好。为什么输出表中有一行没有行标签?那应该是您有名为“主题 1”等的列吗? -
怎么样:
require(tidyr)spread(df, key = topic, value = label) -
请提供一个最小的工作示例。大多数用户没有时间将您的图像转换为数据。见here
-
感谢您的 cmets。我做了一个样本数据。我已经举了一个例子,说明使用 NA 值的点差会是什么样子。