上我有一個數據幀DF 該看起來像這樣:優化ifelse一個大的數據幀
A B C
1 2 3
2 5 6
3 8 9
的代碼下面的行添加新的列,並相應地填滿數據。
df$Mean.Result1 <- ifelse(df[, "A"] > 0.05 & df[, "B"] > 0.05, "Equal", "")
我使用R 2與Splunk的,並[R在Splunk的不能夠認識到,上述格式。
是否有權這樣做:
df.$Mean.Result1 <- ifelse(df.$A > 0.05 & df$B > 0.05, "Equal", "")
怎樣的兩段代碼有什麼不同?它會影響計算速度嗎?我的實際數據集大約有5億行和400列。
如果你有5億行,它會更有效,不管是記憶方式還是計算方式,都要做'df。$ Mean.Result1 < - ifelse(df。$ A> 0.05&df。$ B> 0.05,1L,0L),然後是df。$ Mean。結果1 < - 因子(df。$ Mean.Result1,levels = c(1L,0L),labels = c(「Equal」,「」)) '。您將大大減少表格的大小,並且涉及'df。$ Mean.Result1'的所有操作將會快得多_much_。儘可能避免字符串,R不能有效地處理它們。 –
'df [,「A」]'相當於'df $ A',而不是'df。$ A'。這兩段代碼是不同的,因爲一個使用變量'df'和另一個'df.'。就計算成本而言,使用第一種或第二種形式是嚴格等價的。 –