在datatable上还有其他关于行方式运算符的帖子.它们太简单或者解决了特定的场景
我的问题更通用.有一个使用dplyr的解决方案.我玩过但未能找到使用data.table语法的等效解决方案.您能否建议一个优雅的data.table解决方案,它可以重现与dplyr版本相同的结果?
编辑1:真实数据集上建议的解决方案的基准汇总(10MB,73000行,24个数字列上的统计数据).基准测试结果是主观的.但是,经过的时间始终可以重复.
| Solution By | Speed compared to dplyr |
|-------------|-----------------------------|
| Metrics v1 | 4.3 times SLOWER (use .SD) |
| Metrics v2 | 5.6 times FASTER |
| ExperimenteR| 15 times FASTER |
| Arun v1 | 3 times FASTER (Map func)|
| Arun v2 | 3 times FASTER (foo func)|
| Ista | 4.5 times FASTER |
Run Code Online (Sandbox Code Playgroud)
编辑2:我在第二天添加了NACount列.这就是为什么在各个贡献者建议的解决方案中找不到该列的原因.
数据设置
library(data.table)
dt <- data.table(ProductName = c("Lettuce", "Beetroot", "Spinach", "Kale", "Carrot"),
Country …Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何方法可以计算数据框中行的中位数。我知道函数 rowmeans 存在,但我不相信有行中值函数。我想将结果存储在数据框中的新列中。这是我的例子
我试着在网上看。有一次提到行中位数,但我在 R 中找不到该函数。
C1<-c(3,2,4,4,5)
C2<-c(3,7,3,4,5)
C3<-c(5,4,3,6,3)
DF <- data.frame(ID=c("A","B","C","D","E"),C1=C1,C2=C2,C3=C3)
DF
# This is as far as I have gotten, but not streamlined
MA <- median(C(3, 3, 5). na.rm = T) # A
MB <- median(C(2, 7, 4). na.rm = T) # B
MC <- median(C(4, 3, 3). na.rm = T) # C
MD <- median(C(4, 4, 6). na.rm = T) # 4
ME <- median(C(5, 5, 3). na.rm = T) # E
CM <- c(MA, MB, MC, …Run Code Online (Sandbox Code Playgroud)