当前位置: 首页 > 知识库问答 >
问题:

在r中用ifelse突变

景阳曜
2023-03-14

我正在研究一个数据帧(昏暗: 10,155乘33)。几排

  rg[1:3, 1:4]

  REF_NO children age_band  status
1   2148        1    45-50 Partner
2   8099        1    61-65 Partner
3   6611        3    31-35 Partner


> table(rg_age_band)

  18-21   22-25   26-30   31-35   36-40   41-45   45-50   51-55 
     63     456     927    1061    1134    1112    1359    1052 
  55-60   61-65   65-70     71+ Unknown 
   1047     881     598     410      55 

对于变量age_band,我想使用tidyverse函数separate(),mutate()

  1. 将年龄段分成两列a1

我正在使用以下代码:

library(tidyr); library(dplyr)

rg1=rg %>% 
  separate(age_band, into = c("a1", "a2"), sep="-") %>% 
  mutate(a1 = as.numeric(ifelse(rg$a1=="71+", 71, rg$a1)),
         a2 = as.numeric(a2),
         age = 0.5*(a1+a2)) %>% 
  select(-a1-a2)

Error: Column `a1` must be length 10155 (the number of rows) or one, not 0 

错误:列a1必须是长度10155(行数)或1,而不是0请建议可以做什么。当我在ifelse语句中运行没有'$'的代码时,我得到一个错误对象'a1'没有找到,而通常,我们在使用链接运算符时不需要'$'

mutate(a1 = as.numeric(ifelse(rg$a1=="71+", 71, rg$a1))

也是

#is producing warning 
Expected 2 pieces. Missing pieces filled with `NA` in 465 rows```



编辑:附加示例数据

共有1个答案

庄弘业
2023-03-14

以下代码不会产生任何错误:

rg <- data.frame(REF_NO = c(2148, 8099, 6611), children = c(1,1,3), age_band = c("45-50", "61-65", "71+"))

rg %>% 
  tidyr::separate(age_band, into = c("a1", "a2"), sep="-") %>% 
  mutate(a1 = as.numeric(ifelse(a1=="71+", 71, a1)),
         a2 = as.numeric(a2),
         age = 0.5*(a1+a2)) %>% 
  select(-a1, -a2)
 类似资料:
  • 我有一个名称重复的数据集。如果名称重复,我想创建一个值为1(TRUE)或0(FALSE)的新列。 这是我使用的代码: 或者 然而,我得到了上面可以看到的错误。 另一个想法是使用group_by,然后计算计数。喜欢: 但是,它不能返回原始数据帧后group_by

  • 我有一个数据帧,它看起来像: 我想创建一个新的变量来识别一个网站是否使用6122喷墨作为我的dplyr管道的一部分。新变量应该包含Y或N。我使用了下面的代码: 我希望得到如下输出: 然而,我反而得到了这样的输出: 任何帮助都将不胜感激。

  • 我有如下所述格式的数据,其中我需要使用的所有变量要么是要么是变量的名称,并且我需要将NAs更改为0,将字符串更改为1。我尝试使用和,但返回的都是1。我现在唯一有效的解决方案是对每一个变量进行单独的变异。 如何同时跨多个变量将所有s更改为0,将所有字符串更改为1?

  • 我试图用grepl(部分匹配)和ifelse使用mutate创建新列。我有单位的药物名称列表,我想用这些单位创建新的列。这是我的药名样本,

  • 我是一名教师,希望正确使用<code>数据。表在<code>R 以下是MWE: 我的问题在于什么是正确的在<code>j,特别是当我们依赖另一个表时? 如下所示,问题1和问题2都有多个可能的正确答案。 虽然正确的列计算无误,但还是有些地方不对:例如,当< code >学生b回答问题时,他得到了正确的分数,尽管他回答错误。只有< code>correct列中的一些条目是关闭的,这使我相信我不明白变量

  • 我用R编写了以下代码,效果很好。但是,假设我必须对具有多个级别的因子变量应用类似的代码(