合并R中的列

时间:2016-07-12 10:20:38

标签: r merge

我在数据框中合并列时遇到问题。

这就是我的数据框架:

     HDI.Rank              Country X1990 X1995 X2000 X2005 X2010 X2011 X2012 X2013
    1      171          Afghanistan 121.3 103.0  94.5  84.0  75.3  73.6  72.0  70.2
    2       85              Albania  35.1  29.1  23.2  18.2  14.8  14.2  13.8  13.3
    3       83              Algeria  39.9  36.4  33.9  28.8  23.5  22.8  22.2  21.6
    4       34              Andorra   7.5   5.2   3.9   3.1   2.4   2.4   2.3   2.2
    5      149               Angola 133.4 132.7 128.3 121.5 109.6 107.0 104.3 101.6
    6       58  Antigua and Barbuda  23.4  17.9  13.8  10.6   8.6   8.2   8.0   7.7

我想将所有年份列合并到一个名为Year的列中,但我不知道该怎么做,因为我仍然需要它来匹配每年的国家和HDI ..

到目前为止,我已经尝试过使用dplyr,但它没有用。

    infant_data %>% unite(X1990, X1995, X2000, X2005, X2010, X2011, X2012, X2013, sep = "", remove = FALSE)

如果有人可以帮助我,那将非常感激。

2 个答案:

答案 0 :(得分:2)

df <- data.frame(HDI.Rank=c(171L,85L,83L,34L,149L,58L),Country=c('Afghanistan','Albania',
'Algeria','Andorra','Angola','and Barbuda'),X1990=c(121.3,35.1,39.9,7.5,133.4,23.4),X1995=c(
103,29.1,36.4,5.2,132.7,17.9),X2000=c(94.5,23.2,33.9,3.9,128.3,13.8),X2005=c(84,18.2,28.8,3.1
,121.5,10.6),X2010=c(75.3,14.8,23.5,2.4,109.6,8.6),X2011=c(73.6,14.2,22.8,2.4,107,8.2),X2012=
c(72,13.8,22.2,2.3,104.3,8),X2013=c(70.2,13.3,21.6,2.2,101.6,7.7),stringsAsFactors=F);

数据

var result = _(data)
  .groupBy('xType') // group each item by xType
  .mapValues(function(value) { // map each key value
    return _(value)
      .flatMap('pets') // get all pets
      .filter({ type: 'Cat' }) // Only get cats
      .map('name') // get the names of all pets
      .sort() // sort names
      .value();
  }).value();

答案 1 :(得分:0)

您可以尝试融化功能:

result=melt(infant_data,id.vars = c("HDI.Rank","Country"),variable.name = "year")[,year:=substring(year,2)]