我正在尝试从现有列创建新列,然后删除任何重复的 IDS

问题描述 投票:0回答:1

我正在尝试从现有列创建新列,然后删除任何重复的 IDS。我的 df 看起来像这样: 这就是我的数据框目前的样子,它由三列组成,分别是唯一 ID、年份和年收入。年收入列将 2006 年开始到 2023 年结束的年份的年收入全部集中在一列中,这导致了 ID 的许多重复。但是我只想要唯一/不同的 ID。

dataframe2 <- data.frame(ID = c("1", "2", "3", "4", "4", "5", "5", "5" "6", "7"), 
                        year = c("2006", "2006", "2007", "2006", "2007", "2006", "2007", 
                        "2008",
"2010", 2014"),
                        Annual_Income = c("23389", "607002", "45000", "80000", '67000", 
                        "140000", "23389", "607002", "45000", "80000"))

我尝试了几种不同的选项,主要是每年创建单独的表并将它们合并在一起,但这似乎非常混乱且不必要。我主要关心的是保留每年的所有收入数据并将其设置为一行,然后没有重复的 ID。

我希望 df 如下所示:

<pre>  ID. 2006 2007 2008 2009 2010 2014

#1 1 23389 NA NA NA NA NA <br/>
#2 2 607002 NA NA NA NA NA <br/>
#3 3 NA 45000 NA NA NA NA <br/>
#4 4 80000 67000 NA NA NA NA<br/>
#5 5 140000 23389 607002 NA NA NA <br/>
#6 6 NA NA NA NA 45000 NA <br/>
#7 7 NA NA NA NA NA 80000 <code>

我在这里阅读了一些类似的帖子,但没有一个能完全回答我的问题(我是 R studio 的新手,过去使用过 SAS 和 Stata)。预先感谢

duplicates aggregate rstudio
1个回答
0
投票

spread()
包中的
tidyr
函数应该可以解决问题:

library(tidyr)    
data_reshaped <- dataframe2 %>% 
      spread(key = ID, value = Annual_Income) 
© www.soinside.com 2019 - 2024. All rights reserved.