我正在尝试使用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
,或者如何正确合并列。
有人可以告诉我该怎么做吗?
答案 0 :(得分:1)
library(tidyr)
df_long = gather(df_ex1, key = Parameter, value = Value, -CODE)
TYPE值应该是添加到新数据框的全新列。这个想法是紫色总是两个,其他两个总是一个
只需添加一个包含此定义的列:
df_long$TYPE = ifelse(df_long$Parameter == "Purple", "TWO", "ONE")
df_long
# CODE Parameter Value TYPE
# 1 A Red 11.4 ONE
# 2 B Red 10.9 ONE
# 3 C Red 11.4 ONE
# 4 A Blue 0.57 ONE
# 5 B Blue 0.89 ONE
# 6 C Blue 1.19 ONE
# 7 A Purple 0.4 TWO
# 8 B Purple 3.5 TWO
# 9 C Purple NA TWO