gpt4 book ai didi

r - 对于每个变量类型,用一个引用行划分所有行

转载 作者:行者123 更新时间:2023-12-02 09:22:05 25 4
gpt4 key购买 nike

n = c(rep("A",3),rep("B",4),rep("C",3))
s = 1:10
b = 5:14
c = 20:29
df = data.frame(n, s, b, c)

enter image description here

对于每种类型的变量 n(A、B、C),我希望第一行作为引用行。我想划分每一行,在 n 的每个类别中除以引用行(包括引用行本身)。我想我必须使用一些应用功能,但我不确定如何攻击它。

最佳答案

我们可以使用data.table。将 'data.frame' 转换为 'data.table' (setDT(df)),按 'n' 分组,循环遍历其他列,除以引用行(第一行 - >x[1])

library(data.table)
setDT(df)[, lapply(.SD, function(x) x/x[1]) , n]

如果需要,可以将其分配 (:=) 回感兴趣的列

setDT(df)[, (2:ncol(df)) := lapply(.SD, function(x) x/x[1]) , n]

如果我们希望 'n2' 保持不变,则在 .SDcols 中指定列

nm1 <- setdiff(names(df), c("n", "n2"))
setDT(df)[, (nm1) := lapply(.SD, function(x) x/x[1]) , n, .SDcols = nm1]

或者另一种选择是 dplyr

library(dplyr)
df %?%
group_by(n) %>%
mutate_each(funs(./.[1]), setdiff(names(.), "n2"))

关于r - 对于每个变量类型,用一个引用行划分所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41740171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com