0
我有一個數據幀users
與列id
和country
R:填充取決於值的列和向量
id country
1 France
2 United States
3 France
我要添加新的列salary
這取決於平均salary
用於給出country
。
我首先想到的是要建立一個配置向量與(country, salary)
這樣的:
salary_country <- c(
"France"=45000,
"United States"=50000,
...)
然後要創建這樣的列(使用dplyr
):
tbl_df(users) %>%
mutate(salary = ifelse(country %in% names(salary_country),
salary_country[country],
0))
它運行就像一個魅力。如果該國不存在於我的salary_country
載體中,則salary
等於0,否則它等於給定的salary
。
但是,它在非常大的數據幀上非常慢,而且非常冗長。
有沒有更好的方法來實現它?
製作'salary_country'一個'data.frame' /'data.table'和'合併()'他們與所有= TRUE',這將給你一個NA,沒有平均工資,這是國際海事組織比輸入'0'更好。編輯:請參閱http://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames-inner-outer-left-right –
如果OP使用'data.table',則無需顯式'合併' ...'on'屬性加上'data.table'合併語法就足夠了。請參閱小插圖。 –