gpt4 book ai didi

r - 一次对多个列进行操作

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

一次操作多列(或多行)的编程方式是什么?考虑这个例子:

df2 <- data.frame(a = 1:10, b = 5:14, c = 10:1, d = 14:5)

我想创建两个包含 a/b 和 c/d 比率的新列。为了简单起见,我们假设所有列之间的空间关系是一致的。只需要制作两列,不妨做这样的事情:

df2$ab <- with(df2, a/b)
df2$cd <- with(df2, c/d)

df2 <- transform(df2, ab = a/b, cd = c/d)

创建最终产品,例如:

    a  b  c  d        ab        cd
1 1 5 10 14 0.2000000 0.7142857
2 2 6 9 13 0.3333333 0.6923077
3 3 7 8 12 0.4285714 0.6666667
4 4 8 7 11 0.5000000 0.6363636
5 5 9 6 10 0.5555556 0.6000000
6 6 10 5 9 0.6000000 0.5555556
7 7 11 4 8 0.6363636 0.5000000
8 8 12 3 7 0.6666667 0.4285714
9 9 13 2 6 0.6923077 0.3333333
10 10 14 1 5 0.7142857 0.2000000

但是如果您需要迭代数百列怎么办?我通常会使用 Excel 或 SQL 来连接代码并将其放入我的 .R 脚本中,但似乎必须有一种方法可以使用 R 来解决这个问题。

全面披露:此问题与 cross validated 上的问题相关我在那里拼凑了一个不可能是最佳的解决方案。

最佳答案

尝试这个解决方案:

df2 <- data.frame(a = 1:10, b = 5:14, c = 10:1, d = 14:5, e = 34:43, f = 56:65)

n <- ncol(df2)
s1 <- seq(1, n, 2)
s2 <- seq(2, n, 2)

df2[paste(names(df2)[s1], names(df2)[s2], sep="")] <- df2[, s1] / df2[, s2]

关于r - 一次对多个列进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5021657/

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