- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在我的包中创建一个通用函数。目标是找到百分比列,然后使用 parse_number
如果他们是 character
列。我一直无法使用 mutate_at
找到解决方案和 ifelse
.我在下面粘贴了一个reprex。
library(tidyverse)
df <- tibble::tribble(
~name, ~pass_percent, ~attendance_percent, ~grade,
"Jon", "90%", 0.85, "B",
"Jim", "100%", 1, "A"
)
percent_names <- df %>% select(ends_with("percent"))%>% names()
# Error due to attendance_percent already being in numeric value
if (percent_names %>% length() > 0) {
df <-
df %>%
dplyr::mutate_at(percent_names, readr::parse_number)
}
#> Error in parse_vector(x, col_number(), na = na, locale = locale, trim_ws = trim_ws): is.character(x) is not TRUE
最佳答案
您的 attendance_percent
变量是数字,不是字符和 parse_number
只需要字符变量,见 here .所以一个解决方案是:
edited_parse_number <- function(x, ...) {
if (mode(x) == 'numeric') {
x
} else {
parse_number(x, ...)
}
}
df %>%
dplyr::mutate_at(vars(percent_names), edited_parse_number)
# name pass_percent attendance_percent grade
# <chr> <dbl> <dbl> <chr>
#1 Jon 90 0.85 B
#2 Jim 100 1 A
percent_names <- df %>%
select(ends_with("percent")) %>%
select_if(is.character) %>%
names()
percent_names
# [1] "pass_percent"
df %>%
dplyr::mutate_at(vars(percent_names), parse_number)
# name pass_percent attendance_percent grade
# <chr> <dbl> <dbl> <chr>
# 1 Jon 90 0.85 B
# 2 Jim 100 1 A
关于r - 将 mutate_at 与 mutate_if 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60638968/
我有一个问题: df = tibble(one = list('a', 'b'), two = list(c('p1', 'p2', 'p3'), NA_character_), three = li
我试图从所有其他列中减去一列,但并非所有列都被修改。 test % mutate_at(vars(-a), funs(. - !!as.name(col))) a b c
我刚问了a question about generating multiple columns at once with dplyr ,我是个笨蛋,把问题简单化了,还有另一个问题。我想找到一种 dp
使用 dplyr , 有没有办法在不使用 rowwise() 的情况下逐行选择性地改变列? 例如,给定下面的输入,我想在以“pre_”为前缀的列中用零替换负数: df % rowwise() %
我正在尝试收紧 %>%管道工作流,我需要将相同的函数应用于多列,但每次更改一个参数。我觉得purrr的 map或 invoke函数应该会有所帮助,但我无法理解它。 我的数据框包含预期生命周期、贫困率和
我一直在玩dplyr::mutate_at通过对某些列应用相同的函数来创建新变量。当我命名我的函数 在 .funs参数,mutate 调用创建带有后缀的新列而不是替换现有列,这是我在 this thr
这个问题已经有答案了: Create new variables with mutate_at while keeping the original ones (1 个回答) 已关闭 3 年前。 我有
如果我有这样的数据框 set.seed(1) df % mutate(Y = if_else(X > 10, -Y, Y), Z = if_else(X > 10,
我定义了必须应用于不同数据框列集的函数。例如,mtcars 我想将 as.integer() 函数应用于列 c("mpg", "cyl") 和 >as.logic() 到 c("vs", "am")
如果我有这样的数据框 set.seed(1) df % mutate(Y = if_else(X > 10, -Y, Y), Z = if_else(X > 10,
有一个 data.frame (tibble) 如下: require(dplyr) df_org 1 1 A 2 2 B 使用 mutate_at 会抛出以下错误
我经常遇到必须重新编码遵循相同结构的多个列并将它们保存到具有不同名称的列中的问题。如果我可以覆盖它们,这将只是 dplyr 中的一行,但由于我还想保留原始列,我不知道一个好的解决方案。下图。 这将是我
这个问题在这里已经有了答案: Applying a function to every row of a table using dplyr? (8 个回答) 关闭 3 年前。 我有一个列,我希望将其
我可以在单个 mutate_at 步骤中在同一列上连续使用多个函数,例如:(sqrt(log(x))) library(dplyr) head(mtcars) %>% select(mpg,
我正在尝试重新编码几个变量,但使用不同的重新编码方案。重新编码方案保存在一个列表中,其中每个元素都是 old = new 形式的命名向量。每个元素是数据框中每个变量的重新编码方案 我正在使用 muta
我正在尝试对 R 中数据框的多个列应用相同的函数。 我有一个单独的数据框,其中包含主数据框中的一些列。当主数据框中的列在另一个数据框中时,我想将这两列加在一起,但我似乎无法弄清楚如何访问 mutate
我有一个 data.frame具有大量名称遵循模式的列。如: df % mutate( x = ifelse(is.na(x_1), x_2, x_1), y = ifelse(i
require(dplyr) df % mutate_at(.vars = col_var, .funs = list(~ ifelse(df[, col_var+1] =
这是我的数据: ID a b c d 1 x 1 2 3 2 y 1 2 3 3 z NA NA NA 4 z 1 2 3 5 y NA NA NA 现在,如果我想用 a 组的 b 平均值替
我想创建一个函数,可以根据用户提供的输入变量和截止值列表以编程方式添加变量。 具体来说,我想定义一个函数 myfun 1
我是一名优秀的程序员,十分优秀!