【问题标题】:Create variable from non-consecutive variables using APPLY in R在 R 中使用 APPLY 从非连续变量创建变量
【发布时间】:2016-01-24 01:25:59
【问题描述】:

问题

我正在尝试使用 R 中的 apply() 函数来创建一个新变量,该变量将我的数据集中的几个非连续变量相加。

数据集是一个包含 40 个变量和 1000 个观察值的数据框。 (我还不知道如何在 StackOverflow 上直观地表示这一点。)

我可以使用这个函数来对连续变量求和:

data$newvar <- apply(data[24:34], MARGIN = 1, FUN = sum)

我想创建一个 24 和 34 之和但不是 24 到 33 的变量。

data$newvar <- apply(data[24,34], MARGIN = 1, FUN = sum)

很遗憾,这不起作用。我收到以下错误:

dim(X) 的长度必须是正数

提前致谢!

【问题讨论】:

标签: r apply


【解决方案1】:

OP 的代码

data[24,34]

正在选择第 24 行和第 34 列中的元素,而不是第 24 和 34 列。所以,它是一个长度为 1 的vector。因此,我们得到错误

dim(X) 的长度必须是正数

要选择这些列,请将其连接起来 (c)。

data[,c(24,34)]

如果原始数据集是data.frame,则不需要,

data[c(24,34)]

然后我们可以使用apply

apply(data[c(24,34)], 1, FUN=sum)

但是,这可以在不使用循环的情况下解决。

rowSums(data[c(24,34)])

【讨论】:

  • 谢谢你,@akrun。这解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-28
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
相关资源
最近更新 更多