我有一个数据框
import transformers #it is important to load the library before checking!
import os
os.environ['TRANSFORMERS_CACHE']
我要创建2个数据框,其值分别为:
A B C D
r1 10 7 19 11
r2 5 5 7 8
r3 12 9 13 11
r4 8 10 11 9
值,min
值。我有专栏的功能
min
我得到的结果如下,
d1=transform(d,A=A-(min(A)),B=B-(min(B)),C=C-(min(C)),D=D-(min(D)))
我应该使用什么函数来获取行的结果
> d1
A B C D
r1 5 2 12 3
r2 0 0 0 0
r3 7 4 6 3
r4 3 5 4 1
(从该行的每个项目中减去该行的> d2
A B C D
r1 0 2 9 1
r2 0 5 2 3
r3 1 3 2 0
r4 0 7 3 1
值)
答案 0 :(得分:1)
如果我理解了您的问题,则可以在数据框的转置上运行“列函数”。转置后的数据帧会变成矩阵,因此您需要将其转回一个数据帧:
transpose <- as.data.frame(
t(yourDataFrame)
)
d2 <- transform(transpose ,A=A-(min(A)),B=B-(min(B)),C=C-(min(C)),D=D-(min(D)))
顺便提一下这个问题。我建议您阅读如何创建最小的,可复制的示例:https://stackoverflow.com/help/minimal-reproducible-example
答案 1 :(得分:1)
您还可以将apply
功能与:
# 1 for the rows
apply(d, 1, function(x){x-min(x)}
# 2 for the columns
apply(d, 2, function(x){x-min(x)}
答案 2 :(得分:0)
我们可以使用pmin
d - do.call(pmin, d)
或按列
library(matrixStats)
d - colMins(as.matrix(d))[col(d)]