см. мой воспроизводимый и желаемый результат ниже.
Я хочу создать новую переменную, в которой я объединяю значения переменных из других наблюдений (строк), которые я хочу идентифицировать в цикле, используя подмножество. Состояние подмножества должно быть определено циклом. В примере 1 subset(df, country == i)
не работает, но вручную (в примере 2) subset(df, country == 'US')
работает. Я думал, что country == i
и country == 'US'
должны быть почти одинаковыми.
# create a df
country <- c('US', 'US', 'China', 'China')
Trump_virus <- c('Y', 'N' ,'Y', 'N')
cases <- c (1000, 2000, 4, 6)
df <- data.frame(country, Trump_virus, cases)
#################################################### Ex.1
for (i in df$country) {
print(i)
df <- df %>%
mutate(cases_corected = ifelse(
Trump_virus == 'Y'
,subset(df, Trump_virus == 'N' & country == i)$cases*1000
,'killer_virus'
))}
##
df$cases_corected
#################################################### Ex.2
for (i in df$country) {
print(i)
df <- df %>%
mutate(cases_corected = ifelse(
Trump_virus == 'Y'
,subset(df, Trump_virus == 'N' & country == 'US')$cases*1000
,'killer_virus'
))}
##
df$cases_corected
################################################### Desired output
> df$cases_corected
[1] "2e+06"
[2] "killer_virus"
[3] "6000"
[4] "killer_virus"