将两个或多个观察值放在一个变量中

Posted

技术标签:

【中文标题】将两个或多个观察值放在一个变量中【英文标题】:Put two or more observations in one variable 【发布时间】:2022-01-11 07:48:11 【问题描述】:

我有一个代码,它显示了几个代表相同字符串变量的数字。有“1”、“01”和“1”,但它们都是一样的。如何将这三个字符串添加到一个变量“1”中而不会丢失观察结果?这是一个例子:

  0     1     2     3     4     5     6     7     8     9     .     0    00    01    02    03    04 
8011 18244  9289 32271 14412 14866 25329  3972  7086 44114   178   834     7    17    11    29    8

【问题讨论】:

您需要在该 R 对象上向我们提供dput 的输出。我怀疑它是一个命名的数字向量,但我们需要看到明确的结构,只有 dput 会提供。 在 dput 输出中请求的编辑在哪里????? 请提供足够的代码,以便其他人更好地理解或重现问题。 所以我得到了答案。这是识别问题的代码 unique(tb_2015_2020$situa_ence) 所以我在控制台上得到了这个: unique(tb_2015_2020$situa_ence) [1] "1" "" "2" "3" "4" "5" "7" “10”“8”“9”“2”“5”“4”“8”“1”“3”“9”“7”“01”“02”“03”“04”[23]“05 " "07" "08" "。" 【参考方案1】:

这就是我认为您可能正在使用的东西:

inp2 <-  c(`0` = 8011, `1` = 18244, `2` = 9289, `3` = 32271, `4` = 14412, 
`5` = 14866, `6` = 25329, `7` = 3972, `8` = 7086, `9` = 44114, 
. = 178, `0` = 834, `00` = 7, `01` = 17, `02` = 11, `03` = 29, 
`04` = 8)

据我了解,您希望根据第一行的数值对第二行数值进行分组。 (您并没有告诉我们您希望我们对标题为句点的项目做什么。)我可能会在分组操作之前将这些非数字名称分配给 999:

 inp3 <- inp2
 names(inp3)[is.na(as.numeric(names(inp3)))] <- 999
#Warning message:
#In names(inp3)[is.na(as.numeric(names(inp3)))] <- 999 :
#  NAs introduced by coercion

 inp3
 #   0     1     2     3     4     5     6     7     8     9   999     0    00    01    02    03    04 
 #8011 18244  9289 32271 14412 14866 25329  3972  7086 44114   178   834     7    17    11    29     8 

然后您可以拆分“数字化”名称:

split(inp3, as.numeric( names(inp3)))
# ---- result ----
$`0`
   0    0   00 
8011  834    7 

$`1`
    1    01 
18244    17 

$`2`
   2   02 
9289   11 

$`3`
    3    03 
32271    29 

$`4`
    4    04 
14412     8 

$`5`
    5 
14866 

$`6`
    6 
25329 

$`7`
   7 
3972 

$`8`
   8 
7086 

$`9`
    9 
44114 

$`999`
999 
178 

如果您想获得这些类别中的总和,只需在该列表中使用 sapply:

sapply( split(inp3, as.numeric( names(inp3))) , sum)
# --------------------------
    0     1     2     3     4     5     6     7     8     9   999 
 8852 18261  9300 32300 14420 14866 25329  3972  7086 44114   178 

【讨论】:

让我们举个例子:代码中的 0 和 00 表示相同的意思:“1-4 年的学习”。但在我给它们一个标签之前,我必须将与 0 和 00 相关的值相加,因为它们是同一个类别。同样的事情发生在数字“1”和“01”和其他......是相同的类别,但 data.frame 分别显示它们。现在是不是更好理解了?非常感谢 所以您只想要我定义的类别中的总和? (你为什么不说你想汇总这些值?) 谢谢 IRTFM。不幸的是,第一个代码不起作用。我输入了以下代码,消息是“错误:尝试使用零长度变量名”和“错误:意外','在“5 = 14866”中,代码​​是:escolaridade1 您可能缺少引号或反引号。当它们用于矢量项目名称时,需要匹配。不幸的是,您的评论可能无法正确显示。您需要在发布代码时学习edit您的问题主体,而不是使用在显示代码方面非常有限的cmets。【参考方案2】:

所以我明白了。我识别问题的代码是:

独特(tb_2015_2020$situa_ence) [1] “1” “” “2” “3” “4” “5” “7” “10” “8” “9” “2” “5” “4” “8” “1” “3” “9”“7”“01”“02”“03”“04” [23] “05” “07” “08” “.”

因此,在查看了每个类别的特征后,我使用了 dyplyr 上的“mutate”函数来聚合数字:

tb_2015_2020% 变异(desfecho1 =case_when((situa_ence=="1")|(situa_ence=="1")|(situa_ence=="01")~"g1.cura", (situa_ence=="2")|(situa_ence=="2")|(situa_ence=="02")~"g2.abandono", (situa_ence=="3")|(situa_ence=="3")|(situa_ence=="03")~"g3.óbito_TB", (situa_ence=="4")|(situa_ence=="4")|(situa_ence=="04")~"g4.óbito_outra_causa", (situa_ence=="5")|(situa_ence=="5")|(situa_ence=="05")~"g5.transferencia", (situa_ence=="7")|(situa_ence=="7")|(situa_ence=="07")~"g7.TB_DR", (situa_ence=="8")|(situa_ence=="8")|(situa_ence=="08")~"g8.Mudanca_esquema", (situa_ence=="9")|(situa_ence=="9")~"g9.falencia", (situa_ence=="10")~"g10.abandono_pri"))

现在我有正确的类别。谢谢大家,我是新来的。

【讨论】:

以上是关于将两个或多个观察值放在一个变量中的主要内容,如果未能解决你的问题,请参考以下文章

分类数据分析

在 R 中使用多个观察值从长到宽转换

观察绑定或状态变量

如何将多个变量传递给 Angular 2 中的组件?

已解决:将两个变量与多行值并排组合

将多个 SELECT INTO 结果合并为一个变量