使用过滤器将数据框应用于不同变量

雅各布

我正在尝试在数据框中计算几个新变量。以初始值为例:

说我有:

Dataset <- data.frame(time=rep(c(1990:1992),2),
           geo=c(rep("AT",3),rep("DE",3)),var1=c(1:6), var2=c(7:12))

        time    geo var1 var2
1       1990    AT  1    7
2       1991    AT  2    8
3       1992    AT  3    9
4       1990    DE  4   10
5       1991    DE  5   11
6       1992    DE  6   12

而且我要:

        time    geo  var1  var2  var1_1990  var1_1991  var2_1990 var2_1991
1       1990    AT   1     7      1          2          7         8
2       1991    AT   2     8      1          2          7         8
3       1992    AT   3     9      1          2          7         8
4       1990    DE   4     10     4          5          10        11
5       1991    DE   5     11     4          5          10        11
6       1992    DE   6     12     4          5          10        11

因此,对于新变量,时间和变量都在变化。这是我的尝试:

intitialyears <- c(1990,1991)
intitialvars <- c("var1", "var2") 
# ideally, I want code where I only have to change these two vectors 
# and where it's possible to change their dimensions

for (i in initialyears){
lapply(initialvars,function(x){
rep(Dataset[time==i,x],each=length(unique(Dataset$time)))
})}

它运行没有错误,但没有任何结果。我想在示例中分配变量名称(例如“ var1_1990”),然后立即使新变量成为数据框的一部分。我也想避免for循环,但是我不知道如何在这个函数周围包装两个lapply。我应该让函数使用两个参数吗?Apply函数不能将结果携带到我的环境中吗?我已经在这里停留了一段时间,所以我将不胜感激!

ps:我有解决方案,可以通过组合来实现这种组合,而无需套用和喜欢,但是我想摆脱复制和粘贴:

Dataset$var1_1990 <- c(rep(Dataset$var1[which(Dataset$time==1990)],
                      each=length(unique(Dataset$time))))
bgoldst

这是可以做到的subset()reshape()merge()

merge(Dataset,reshape(subset(Dataset,time%in%c(1990,1991)),dir='w',idvar='geo',sep='_'));
##   geo time var1 var2 var1_1990 var2_1990 var1_1991 var2_1991
## 1  AT 1990    1    7         1         7         2         8
## 2  AT 1991    2    8         1         7         2         8
## 3  AT 1992    3    9         1         7         2         8
## 4  DE 1990    4   10         4        10         5        11
## 5  DE 1991    5   11         4        10         5        11
## 6  DE 1992    6   12         4        10         5        11

列顺序并不完全是您所要解决的问题,但是如果需要,您可以事后使用索引操作来解决。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建将不同过滤器应用于数据框的循环

来自分类Dev

将LOESS过滤器/回归应用于数据框的所有列

来自分类Dev

基于用户输入将多个过滤器应用于数据框的pythonic方法

来自分类Dev

将公式仅应用于Google表格上的可见单元格(使用过滤器)

来自分类Dev

使用字典将多个字符串包含过滤器应用于熊猫数据框

来自分类Dev

使用条件格式应用过滤器框

来自分类Dev

根据条件将过滤器应用于数据框

来自分类Dev

查询数据框,但仅将过滤器应用于列值不是NaN的行

来自分类Dev

如何转换此数据框并将过滤器应用于单元格?

来自分类Dev

巴特沃斯过滤器应用于熊猫数据框的一列

来自分类Dev

将过滤器应用于列表并显示数据

来自分类Dev

将多个过滤器应用于数组javascript

来自分类Dev

将SVG过滤器仅应用于“填充”

来自分类Dev

将片段过滤器应用于多个源

来自分类Dev

将特定通道应用于ffmpeg过滤器

来自分类Dev

如何将Delphi ADOTable过滤器应用于日期数据类型

来自分类Dev

将中值过滤器应用于2轴的数据

来自分类Dev

将2个过滤器应用于集合,但仅使用1个(AngularJS)

来自分类Dev

如何使用Jinja过滤器将字典应用于项列表?

来自分类Dev

使用JavaScript将多个过滤器类别应用于<li>的列表

来自分类Dev

将2个过滤器应用于集合,但仅使用1个(AngularJS)

来自分类Dev

BigQuery:如何通过将三个不同的过滤器应用于同一列来获取数据?

来自分类Dev

MS Access Form:将 Allow Edit 设置为 No,然后使用组合框应用过滤器

来自分类Dev

如何将多个过滤器应用于数据透视表中的多个值字段?

来自分类Dev

熊猫:加入两个数据框并应用过滤器

来自分类Dev

R使用过滤器和管道过滤以日期为条件的大型数据框

来自分类Dev

Angular JS - 将 Javascript 过滤逻辑应用于 Angular 过滤器

来自分类Dev

选择不同的行并应用过滤器

来自分类Dev

AngularJS:将货币过滤器应用于自定义过滤器的返回值

Related 相关文章

  1. 1

    如何创建将不同过滤器应用于数据框的循环

  2. 2

    将LOESS过滤器/回归应用于数据框的所有列

  3. 3

    基于用户输入将多个过滤器应用于数据框的pythonic方法

  4. 4

    将公式仅应用于Google表格上的可见单元格(使用过滤器)

  5. 5

    使用字典将多个字符串包含过滤器应用于熊猫数据框

  6. 6

    使用条件格式应用过滤器框

  7. 7

    根据条件将过滤器应用于数据框

  8. 8

    查询数据框,但仅将过滤器应用于列值不是NaN的行

  9. 9

    如何转换此数据框并将过滤器应用于单元格?

  10. 10

    巴特沃斯过滤器应用于熊猫数据框的一列

  11. 11

    将过滤器应用于列表并显示数据

  12. 12

    将多个过滤器应用于数组javascript

  13. 13

    将SVG过滤器仅应用于“填充”

  14. 14

    将片段过滤器应用于多个源

  15. 15

    将特定通道应用于ffmpeg过滤器

  16. 16

    如何将Delphi ADOTable过滤器应用于日期数据类型

  17. 17

    将中值过滤器应用于2轴的数据

  18. 18

    将2个过滤器应用于集合,但仅使用1个(AngularJS)

  19. 19

    如何使用Jinja过滤器将字典应用于项列表?

  20. 20

    使用JavaScript将多个过滤器类别应用于<li>的列表

  21. 21

    将2个过滤器应用于集合,但仅使用1个(AngularJS)

  22. 22

    BigQuery:如何通过将三个不同的过滤器应用于同一列来获取数据?

  23. 23

    MS Access Form:将 Allow Edit 设置为 No,然后使用组合框应用过滤器

  24. 24

    如何将多个过滤器应用于数据透视表中的多个值字段?

  25. 25

    熊猫:加入两个数据框并应用过滤器

  26. 26

    R使用过滤器和管道过滤以日期为条件的大型数据框

  27. 27

    Angular JS - 将 Javascript 过滤逻辑应用于 Angular 过滤器

  28. 28

    选择不同的行并应用过滤器

  29. 29

    AngularJS:将货币过滤器应用于自定义过滤器的返回值

热门标签

归档