R 使用mutate_at跨嵌套数据帧映射
我试图在嵌套了许多变量的数据帧中应用map_dbl。嵌套变量的每个元素都包含一个10000个数字的向量。我有一个数据框,它有多个变量,就像这样 对于嵌套变量的每个元素,我想提取2.5、50和97.5个百分位数。我尝试用map_dbl来实现这一点,它适用于单个嵌套变量的每个元素。不过,我正在努力提高效率,不知道是否有人能帮上忙 我在下面给出了一个可复制的小例子R 使用mutate_at跨嵌套数据帧映射,r,R,我试图在嵌套了许多变量的数据帧中应用map_dbl。嵌套变量的每个元素都包含一个10000个数字的向量。我有一个数据框,它有多个变量,就像这样 对于嵌套变量的每个元素,我想提取2.5、50和97.5个百分位数。我尝试用map_dbl来实现这一点,它适用于单个嵌套变量的每个元素。不过,我正在努力提高效率,不知道是否有人能帮上忙 我在下面给出了一个可复制的小例子 # creates a function to extract 50th 2.5th and 97.5th centiles perce
# creates a function to extract 50th 2.5th and 97.5th centiles
percentile <- function (x,y){
map_dbl(x, quantile(~x,y))
}
x <- tibble(a = list(c(rnorm(10,1)),c(rnorm(10,2)), c(rnorm(10,3)), c(rnorm(10,4))),
b = list(c(rnorm(10,0.5)),c(rnorm(10,0.6)), c(rnorm(10,0.7)), c(rnorm(10,0.7))))
#创建一个函数来提取第50个2.5和97.5个百分位数
百分位数%
在(.vars=c('a','b'),.funs=list(ul=percentile(.,0.975))处进行变异
试图执行上述代码,但它给我一个错误
谢谢你你可以在一个
mutate\u
电话:
library(dplyr)
library(purrr)
x %>%
mutate_at(vars(c('a','b')), list(ce = ~percentile(.,0.5),
ll = ~percentile(.,0.025),
ul = ~percentile(.,0.75)))
# A tibble: 4 x 8
# a b a_ce b_ce a_ll b_ll a_ul b_ul
# <list> <list> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 <dbl [10]> <dbl [10]> 1.21 0.232 -0.232 -0.371 2.02 0.673
#2 <dbl [10]> <dbl [10]> 1.65 0.845 0.935 0.222 3.29 1.58
#3 <dbl [10]> <dbl [10]> 3.13 0.811 1.76 -0.183 3.60 1.22
#4 <dbl [10]> <dbl [10]> 3.65 1.08 2.72 -0.574 3.93 1.49
请注意,在较新版本的
dplyr
中,处的mutate\u很快将被所取代 您可以在一个mutate\u中调用:
library(dplyr)
library(purrr)
x %>%
mutate_at(vars(c('a','b')), list(ce = ~percentile(.,0.5),
ll = ~percentile(.,0.025),
ul = ~percentile(.,0.75)))
# A tibble: 4 x 8
# a b a_ce b_ce a_ll b_ll a_ul b_ul
# <list> <list> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 <dbl [10]> <dbl [10]> 1.21 0.232 -0.232 -0.371 2.02 0.673
#2 <dbl [10]> <dbl [10]> 1.65 0.845 0.935 0.222 3.29 1.58
#3 <dbl [10]> <dbl [10]> 3.13 0.811 1.76 -0.183 3.60 1.22
#4 <dbl [10]> <dbl [10]> 3.65 1.08 2.72 -0.574 3.93 1.49
请注意,在较新版本的dplyr
中,
处的mutate\u很快将被所取代 谢谢-这非常有效。我可以查询百分位数函数的语法吗?y如何对应分位数函数的百分位数?好吧,R中几乎所有的函数都支持…
,这是函数的附加参数(请参见?map_dbl
),所以这样做map_dbl(x,分位数,y)
与map_dbl(x,分位数(.x,y)相同
。感谢ronak-非常有帮助。了解SyntaxThank的第二个版本。这非常有效。我可以查询百分位数函数的语法吗?y如何对应分位数函数的百分位数?嗯,R中的几乎所有函数都支持…
,这是函数的附加参数(请参见?map_dbl
)这样做map_dbl(x,分位数,y)
与map_dbl(x,分位数(.x,y)
相同。感谢ronak-非常有帮助。理解语法的第二个版本
percentile <- function (x,y) map_dbl(x, quantile, y)