【问题标题】:combining values of two variables together to create a new variable using r将两个变量的值组合在一起以使用 r 创建一个新变量
【发布时间】:2011-05-24 00:58:21
【问题描述】:

我需要通过组合两个现有变量的值来创建一个新变量

anim <- c(1,2,3,4,5,6,7,8,9,10)
pgrp <- c(1,3,2,4,2,3,1,2,4,3)
fos <- c(2,1,1,2,1,2,1,2,2,1)
data <- data.frame(anim,pgrp,fos)
data
   anim pgrp fos
1     1    1   2
2     2    3   1
3     3    2   1
4     4    4   2
5     5    2   1
6     6    3   2
7     7    1   1
8     8    2   2
9     9    4   2
10   10    3   1

我需要我的新变量“pf”来获取“pgrp”和“fos”的值,如下所示

data
   anim pgrp fos pf
1     1    1   2 12
2     2    3   1 31
3     3    2   1 21
4     4    4   2 42
5     5    2   1 21
6     6    3   2 32
7     7    1   1 11
8     8    2   2 22
9     9    4   2 42
10   10    3   1 31

【问题讨论】:

    标签: r variables


    【解决方案1】:

    如果您的数据框名为x,只需将它们粘贴在一起(强制转换为字符),然后转换为数字

    x$pf <- as.numeric(paste(x$pgrp, x$fos, sep = ""))
    

    (不要使用“数据”作为名称,那已经是一个函数了。)

    【讨论】:

    • tsk,tsk...df也是一个函数。 ;-)
    • @mdsummer;@ Joshua Ulrich,谢谢...永远不会再将“数据”用作数据框名称
    • @mdsummer 我也试过了,有两个数字变量,但我只有一个有 NA 的新变量,知道为什么会这样吗?一个变量有缺失值 (NA),而另一个变量有数值,反之亦然。
    • 不抱歉。您需要复制,顺便说一句,这是自己弄清楚的最简单方法。比较 paste(c(1, NA, 2), 6:7)
    • 谢谢你的回复,我不明白你说的复制是什么意思,我会问一个关于这个话题的新问题
    【解决方案2】:

    你可以使用算术(如果 fos 总是

    df <- within(df, pf <- pgrp * 10 + fos)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      相关资源
      最近更新 更多