【问题标题】:Subtract multiple columns by one column一列减去多列
【发布时间】:2019-09-17 14:35:19
【问题描述】:

我想用采访年份的变量 (inwyys) 减去受访者的出生年份(包含 yrbrn 的变量),并将结果作为新变量保存在数据框中。

数据框的头部:

   inwyys  yrbrn2  yrbrn3  yrbrn4  yrbrn5  yrbrn6  yrbrn7  yrbrn8
1   2012    1949    1955     NA      NA      NA      NA       NA
2   2012    1983    1951    1956    1989    1995    2003     2005
3   2012    1946    1946    1978     NA      NA      NA       NA 
4   2013     NA      NA      NA      NA      NA      NA       NA
5   2013    1953    1959    1980    1985    1991    2008     2011
6   2013    1938     NA      NA      NA      NA      NA       NA

有人可以帮我吗?

非常感谢!

【问题讨论】:

  • 你能提供一个你期望输出的例子吗?

标签: r multiple-columns subtraction


【解决方案1】:

这可以通过对您的数据进行子设置(x[,-1]..取所有但不包括第一列,x[,1]..取第一列)您的数据并进行减法来完成。使用cbind,您可以将新结果绑定到原始数​​据。

cbind(x, x[,-1] - x[,1])
#  inwyys yrbrn2 yrbrn3 yrbrn4 yrbrn5 yrbrn6 yrbrn7 yrbrn8 yrbrn2 yrbrn3 yrbrn4 yrbrn5 yrbrn6 yrbrn7 yrbrn8
#1   2012   1949   1955     NA     NA     NA     NA     NA    -63    -57     NA     NA     NA     NA     NA
#2   2012   1983   1951   1956   1989   1995   2003   2005    -29    -61    -56    -23    -17     -9     -7
#3   2012   1946   1946   1978     NA     NA     NA     NA    -66    -66    -34     NA     NA     NA     NA
#4   2013     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA
#5   2013   1953   1959   1980   1985   1991   2008   2011    -60    -54    -33    -28    -22     -5     -2
#6   2013   1938     NA     NA     NA     NA     NA     NA    -75     NA     NA     NA     NA     NA     NA

数据:

x  <- read.table(header=TRUE, text="   inwyys  yrbrn2  yrbrn3  yrbrn4  yrbrn5  yrbrn6  yrbrn7  yrbrn8
1   2012    1949    1955     NA      NA      NA      NA       NA
2   2012    1983    1951    1956    1989    1995    2003     2005
3   2012    1946    1946    1978     NA      NA      NA       NA 
4   2013     NA      NA      NA      NA      NA      NA       NA
5   2013    1953    1959    1980    1985    1991    2008     2011
6   2013    1938     NA      NA      NA      NA      NA       NA")

【讨论】:

  • 但是如何在之前的数据框中保留新的变量呢?
  • @Alice 例如cbind
【解决方案2】:

我相信您正在寻找以下内容

data$newvar1<-data$yrbrn2-data$inwyys

但是将“数据”替换为您的数据集的名称。如果您想为每个 yrbrn 列执行此操作,只需将“newvar1”更改为“newvar2”等,这样您就不会覆盖之前的计算

【讨论】:

  • 谢谢你,莫尔斯!但我不想写 100 遍!
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 2017-08-19
相关资源
最近更新 更多