我正在研究一个数据帧(昏暗: 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()
我正在使用以下代码:
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```
编辑:附加示例数据
以下代码不会产生任何错误:
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编写了以下代码,效果很好。但是,假设我必须对具有多个级别的因子变量应用类似的代码(