簡體   English   中英

如何根據另一列的值選擇某一列的值(R)

[英]How to select the value of a certain column based on the value of another column (R)

我需要在 R 中重新組織一個數據框,以便特定單位的新變量的值與該單位的年份相匹配。 我有 2010-2020 年所有個別年份的每個單位的值,但在特定年份觀察到個別單位。 我已經合並了數據,使得每個單位(無論其年份)都有列出的所有年份 2010-2020 的值。 每個年度值變量都是它自己的列。

我如何編寫代碼以使年份列中的值確定要從哪一列中提取? 我想將該結果值刪除到一個新列中,與該單位的年份相對應。

例如,在 2015 年觀察到第 4 單元,因此我將從第 6 列(變量 2015)中進行選擇,並將該值存入新列中。 但是第 5 單元是在 2016 年觀察到的,所以我將從第 7 列(變量 2016)中選擇值,並將其存入新列。

為圖像道歉,但因為我不熟悉降價表格式,所以數據框的縮短版本大致如下所示:

在此處輸入圖像描述

這就是我想用新變量創建的:

在此處輸入圖像描述

有沒有辦法對此進行編碼並根據 Year 列中的值選擇列?

嘗試這個

數據

df <- data.frame(Unit = c("Unit1" ,"Unit2","Unit3") ,
                  Year = c(2010 , 2011, 2012),
                  Variable2010 = c(4,2,2),
                  Variable2011 = c(5,6,1),
                  Variable2012 = c(1,0,7))

然后添加所需的列New_Variable

df$New_Variable <- sapply(1:nrow(df) ,
                   \(x) if(length(grep(df$Year[x] , colnames(df))) > 0)df[x,grep(df$Year[x] , colnames(df))] else NA)

輸出

df

  Unit Year Variable2010 Variable2011 Variable2012 New_Variable
1 Unit1 2010          4          5          1            4
2 Unit2 2011          2          6          0            6
3 Unit3 2012          2          1          7            7

暫無
暫無

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

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