我的数据框df
只有一个变量var
,其中包含一些相关值。
df <- data.frame(var = c(rep('AUS',12), rep('NZ',12), rep('ENG',7), rep('SOC',12),
rep('PAK',11), rep('SRI',17), rep('IND',15)))
df %>% count(var)
# # A tibble: 7 x 2
# var n
# <fctr> <int>
# 1 AUS 12
# 2 ENG 7
# 3 IND 15
# 4 NZ 12
# 5 PAK 11
# 6 SOC 12
# 7 SRI 17
根据某些关系,某些值应使用新值进行重新编码。
df %>% mutate(var = recode(var, 'AUS' = 'A', 'NZ' = 'A', 'ENG' = 'A',
'SOC' = 'A', 'PAK' = 'B', 'SRI' = 'B')) %>% count(var)
# A tibble: 3 x 2
# var n
# <fctr> <int>
# 1 A 43
# 2 IND 15
# 3 B 28
可以看出A
和B
分别为4和2值重新编码。我在问题中也有预期的解决方案。但是,有没有其他有效的方法来做到这一点,而不是指定关系相同的次数(4,2)?
答案 0 :(得分:0)
执行此操作的一种方法是使用带有命名条目的向量作为查找表。
Codes = c(rep('A', 4), rep('B', 2), 'IND')
names(Codes) = c('AUS', 'NZ', 'ENG', 'SOC', 'PAK', 'SRI', 'IND')
df$var = Codes[as.character(df$var)]