【发布时间】:2016-01-02 10:52:45
【问题描述】:
我有一个如下所示的数据框 df:
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 和 Splunk,而 Splunk 中的 R 无法识别上述格式.
这样做对吗:
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.Result1 <- factor(df.$Mean.Result1, levels=c(1L, 0L), labels=c("Equal", ""))会在内存方面和在计算方面更加高效。您将大大减小表的大小,并且涉及df.$Mean.Result1的所有操作都将快得多。尽可能避免使用字符串,R 不能有效地处理它们。 -
df[, "A"]等价于df$A,而不是df.$A。两段代码不同,因为一段使用变量df,另一段使用df.。就计算成本而言,使用第一种或第二种形式是严格等价的。
标签: r if-statement dataframe subset splunk