gpt4 book ai didi

r - 在 R 中如何将列的值应用于同一数据框中的多个列

转载 作者:行者123 更新时间:2023-12-01 12:39:10 24 4
gpt4 key购买 nike

我有一个像这样的数据框 (df)

n   g    count  s_a s_b s_c .....
T1 gb 10000 0 1 0
T1 ga,gb 15000 1 1 0

然后我查看了 s_a ... s_n 中的值,看看哪个是最高的 n

top_n <- names(sort(colSums(df[4:ncol(df]), decreasing=TRUE))[1:n]

top_n的值是前N个colsum(colname)的列名

我想使用 top_n 的结果用列计数中的值更新 name = to top_n 的每个列

n   g    count  s_a    s_b    s_c .....
T1 gb 10000 0 10000 0
T1 ga,gb 15000 15000 15000 0

最佳答案

我们可以使用 lapply 循环遍历感兴趣的列 (4:ncol(df)) ,将它与“计数”相乘并将输出分配回原始列。

df[4:ncol(df)] <- lapply(df[4:ncol(df)], `*`, df$count)

或者使用Map,我们可以通过乘以相应的元素来做同样的事情

df[4:ncol(df)] <- Map(`*`, df[4*ncol(df)], list(df$count))

使用data.table v1.9.7,我们可以做一个基于lapply的方法(类似于第一个base R方法)。将 'data.frame' 转换为 'data.table' (setDT(df)),在 .SDcols 中指定感兴趣的列,遍历列,乘以'count',并将输出分配给 (:=) 原始列。

library(data.table)
setDT(df)[, (4:ncol(df)) := lapply(.SD, `*`, count), .SDcols = 4:ncol(df)]

关于r - 在 R 中如何将列的值应用于同一数据框中的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39760319/

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