将两个或多个观察值放在一个变量中
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"))
现在我有正确的类别。谢谢大家,我是新来的。
【讨论】:
以上是关于将两个或多个观察值放在一个变量中的主要内容,如果未能解决你的问题,请参考以下文章