【发布时间】:2015-08-04 23:58:56
【问题描述】:
我正在尝试使用 dplyr 和 tidyr 来格式化数据框。我想 转换这个数据框
df_ex1=data.frame(CODE=c("A","B","C"),
Red=c(11.4,10.9,11.4),
Blue=c(0.57,0.89,1.19),
Purple=c(0.40,3.50,"NA"))
#> df_ex1
# CODE Red Blue Purple
#1 A 11.4 0.57 0.4
#2 B 10.9 0.89 3.5
#3 C 11.4 1.19 NA
到这个数据框:
df_ex2=data.frame(CODE=c("A","B","C"),
TYPE=c("One","One","Two"),
PARAMETAR=c("Red","Blue","Purple"),
VALUE=c(11.4,0.57,0.4))
#> df_ex2
# CODE TYPE PARAMETAR VALUE
#1 A One Red 11.40
#2 B One Blue 0.57
#3 C Two Purple 0.40
我知道我必须使用gather 函数,但我不知道添加列type,或者如何正确合并列。
有人可以告诉我怎么做吗?
【问题讨论】:
-
你应该使用
NA而不是"NA" -
第一个变成第二个的解释是什么?
-
TYPE 值从何而来?我不明白为什么前两行是“一”,第三行是“二”。
-
@earino TYPE 值应该是添加到新数据框中的全新列。这个想法是紫色总是二,其他两个总是一。
-
另一种方式是
melt(df_ex1, measure.vars = c("Red", "Blue", "Purple")),melt来自reshape2,然后使用@Gregor答案的ifelse语句生成Type列。