簡體   English   中英

一列減去多列

[英]Subtract multiple columns by one column

我想用訪談年份(變量)減去變量的出生年份(包含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

有人可以幫我嗎?

非常感謝你!

這可以通過對數據進行子設置( 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")

我相信以下是您正在尋找的

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

但是用您的數據集名稱替換“數據”。 如果要對每個yrbrn列執行此操作,只需將“ newvar1”更改為“ newvar2”,以此類推,這樣就不會覆蓋以前的計算

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM