使用重复行在 R 中旋转数据
Pivoting data in R with duplicate rows
尝试在 R 中做一个简单的枢轴,就像在 SQL 中一样。
我知道有人问过这个问题,但是我遇到了重复行的问题。
Pivoting data in R
目前数据是这样的格式(字符只是占位符,方便查看,实际数据是数值):
V1 V2 V3 V4
A B C Sales
D E F Sales
G H I Technical
J K L Technical
并且需要转换成这样的格式:
Variable Sales Technical
V1 A G
V1 D J
V2 B H
V2 E K
V3 C I
V3 F L
我已经尝试过 reshape 和 tidyr 包,它们要么在 reshape 的情况下聚合数据,要么在 tidyr 的情况下为重复的行标识符抛出错误。
我不关心重复的行标识符,事实上有必要将它们识别为分析因素。
我是不是走错了路?这些是要使用的正确软件包吗?或者有人可以建议另一种方法吗?
我希望这会奏效:
df %>% gather(Variable, Value, V1:V3) %>%
group_by(V4, Variable) %>%
mutate(g = row_number()) %>%
spread(V4, Value) %>% ungroup() %>%
select(-g)
# # A tibble: 6 x 3
# Variable Sales Technical
# * <chr> <chr> <chr>
# 1 V1 A G
# 2 V1 D J
# 3 V2 B H
# 4 V2 E K
# 5 V3 C I
# 6 V3 F L
另一个选项是 melt/dcast
来自 data.table
library(data.table)
dcast(melt(setDT(df1), id.var = 'V4'), variable + rowid(V4) ~
V4, value.var = 'value')[, V4 := NULL][]
# variable Sales Technical
#1: V1 A G
#2: V1 D J
#3: V2 B H
#4: V2 E K
#5: V3 C I
#6: V3 F L
尝试在 R 中做一个简单的枢轴,就像在 SQL 中一样。
我知道有人问过这个问题,但是我遇到了重复行的问题。
Pivoting data in R
目前数据是这样的格式(字符只是占位符,方便查看,实际数据是数值):
V1 V2 V3 V4
A B C Sales
D E F Sales
G H I Technical
J K L Technical
并且需要转换成这样的格式:
Variable Sales Technical
V1 A G
V1 D J
V2 B H
V2 E K
V3 C I
V3 F L
我已经尝试过 reshape 和 tidyr 包,它们要么在 reshape 的情况下聚合数据,要么在 tidyr 的情况下为重复的行标识符抛出错误。
我不关心重复的行标识符,事实上有必要将它们识别为分析因素。
我是不是走错了路?这些是要使用的正确软件包吗?或者有人可以建议另一种方法吗?
我希望这会奏效:
df %>% gather(Variable, Value, V1:V3) %>%
group_by(V4, Variable) %>%
mutate(g = row_number()) %>%
spread(V4, Value) %>% ungroup() %>%
select(-g)
# # A tibble: 6 x 3
# Variable Sales Technical
# * <chr> <chr> <chr>
# 1 V1 A G
# 2 V1 D J
# 3 V2 B H
# 4 V2 E K
# 5 V3 C I
# 6 V3 F L
另一个选项是 melt/dcast
来自 data.table
library(data.table)
dcast(melt(setDT(df1), id.var = 'V4'), variable + rowid(V4) ~
V4, value.var = 'value')[, V4 := NULL][]
# variable Sales Technical
#1: V1 A G
#2: V1 D J
#3: V2 B H
#4: V2 E K
#5: V3 C I
#6: V3 F L