0
考慮下面的模擬數據:R - base ::與字符變量交互的更快解決方案?
df <- data.frame(a=c("John", "Susan", "Eric", "John", "Susan"),
b=c("K", NA, "J", "K", "S"),
c=c("Smith", "Johnson", "May", "Smith", "Johnson"))
df$a <- as.character(df$a)
df$b <- as.character(df$b)
df$c <- as.character(df$c)
,看起來像這樣:
> df
a b c
1 John K Smith
2 Susan <NA> Johnson
3 Eric J May
4 John K Smith
5 Susan S Johnson
我生成一個名爲unique
列,它保存的三個字符變量之間的相互作用的唯一編號。
我使用ifelse
語句僅與列a
和c
交互,如果列b
是NA
。
df$unique <- NA
df$unique <- ifelse(is.na(df$b),
as.integer(interaction(df$a, df$c)),
as.integer(interaction(df$a, df$b, df$c)))
這導致:
> df
a b c unique
1 John K Smith 23
2 Susan <NA> Johnson 3
3 Eric J May 10
4 John K Smith 23
5 Susan S Johnson 9
當我使用此代碼來構建unique
變量中包含數百萬行的我的真實數據,這種計算21小時運行。
有什麼方法可以加速這種性能?更聰明的解決方案?
ifelse
聲明是瓶頸嗎?