【问题标题】: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")
【解决方案2】:
我相信您正在寻找以下内容
data$newvar1<-data$yrbrn2-data$inwyys
但是将“数据”替换为您的数据集的名称。如果您想为每个 yrbrn 列执行此操作,只需将“newvar1”更改为“newvar2”等,这样您就不会覆盖之前的计算