小编Ira*_*kli的帖子

如何在tidyverse中转置数据帧?

使用基本R,我可以转置一个数据帧,比如说mtcars,它包含同一个类的所有列:

as.data.frame(t(mtcars))
Run Code Online (Sandbox Code Playgroud)

或者用管道:

library(magrittr)
mtcars %>% t %>% as.data.frame
Run Code Online (Sandbox Code Playgroud)

如何在tidyr或tidyverse包中完成相同的操作?

我在下面的尝试给出:

错误:行的重复标识符

library(tidyverse)
mtcars %>% gather(var, value, everything()) %>% spread(var, value)
Run Code Online (Sandbox Code Playgroud)

transpose r dataframe tidyr tidyverse

5
推荐指数
2
解决办法
2万
查看次数

R:如何应用为多列输出数据帧的函数(使用dplyr)?

我想在一个特定列和数据帧中的所有其他列之间找到相关性,p值和95%CI.'broom'包提供了一个示例,说明如何使用带有dplyr和管道的cor.test在两列之间执行此操作.对于mtcars,比如mpg列,我们可以与另一列运行相关:

library(dplyr)
library(broom)
mtcars %>% do(tidy(cor.test(.$mpg, .$cyl)))

estimate statistic      p.value parameter   conf.low  conf.high
1 -0.852162 -8.919699 6.112687e-10        30 -0.9257694 -0.7163171
Run Code Online (Sandbox Code Playgroud)

输出是单行数据帧.我想为每列运行cor.test for mpg并将输出发送到一个单独的行.当mpg列与每个其他列配对时,所需的输出将如下所示:

    estimate statistic      p.value parameter   conf.low     conf.high
cyl  -0.852162  -8.919699 6.112687e-10       30 -0.9257694 -0.7163171
disp -0.8475514 -8.747152 9.380327e-10       30 -0.9233594 -0.7081376
hp   -0.7761684 -6.742389 1.787835e-07       30 -0.8852686 -0.5860994
drat  0.6811719  5.096042 1.77624e-05        30 0.4360484  0.832201
wt   -0.8676594 -9.559044 1.293959e-10       30 -0.9338264 -0.7440872
qsec  0.418684   2.525213 0.01708199         30 0.08195487 0.6696186
vs    0.6640389  4.864385 3.415937e-05       30 0.410363 0.8223262
am    0.5998324 …
Run Code Online (Sandbox Code Playgroud)

r function dplyr broom

3
推荐指数
1
解决办法
471
查看次数

R:如何使用dplyr计算缺少值的每行的平均值

我想计算包含缺失值的数据框中每行的多个列的均值,并将结果放在一个名为"means"的新列中.这是我的数据帧:

df <- data.frame(A=c(3,4,5),B=c(0,6,8),C=c(9,NA,1))
  A B  C
1 3 0  9
2 4 6 NA
3 5 8  1
Run Code Online (Sandbox Code Playgroud)

如果列没有缺失值,则下面的代码可以成功完成任务,例如A列和B列.

 library(dplyr)
 df %>%
 rowwise() %>%
 mutate(means=mean(A:B, na.rm=T))

     A     B     C   means
  <dbl> <dbl> <dbl> <dbl>
1     3     0     9   1.5
2     4     6    NA   5.0
3     5     8     1   6.5
Run Code Online (Sandbox Code Playgroud)

但是,如果列缺少值,例如C,则会出现错误:

> df %>% rowwise() %>% mutate(means=mean(A:C, na.rm=T))
Error: NA/NaN argument
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想用dplyr实现它.

r mean dplyr

3
推荐指数
1
解决办法
3784
查看次数

R:如何使用汇总并在分组数据上一起工作

在tidyverse中,汇总可用于具有单值函数的分组数据.例如

mtcars %>% group_by(cyl) %>% summarise(max(cos(mpg)))
Run Code Online (Sandbox Code Playgroud)

如果函数是矢量值,那么,如果我没有错,建议使用do.例如,do命令适用于phych包中的向量值函数'describe':

 library(psych)
 mtcars %>% group_by(cyl) %>% do(describe(.$mpg))
Run Code Online (Sandbox Code Playgroud)

如何同时将单值和向量值函数应用于分组数据?例如,如何将max(cos())和describe()同时应用于mpg列,并将输出作为一个数据帧?

r dplyr tidyverse

3
推荐指数
1
解决办法
44
查看次数

R:如何将递归或迭代函数/映射输出输出到向量中?

我想将用户定义函数的输出反馈回其输入(递归映射),运行此迭代N次,并将每次迭代的输出保存在向量中。这对于“ for”循环很简单

my_fun <- function(x) {x/3 +1} # a user-defined function (trivial example)

my_l <- c()

x <- 0 # initial condition

for(i in 1:10) {
  x <- my_fun(x)
  my_l[i] <- x
}

print(my_l)

>[1] 1.000000 1.333333 1.444444 1.481481 1.493827 1.497942 1.499314 1.499771 1.499924 1.499975
Run Code Online (Sandbox Code Playgroud)

上面的作品,但似乎很粗糙。有更短的方法吗?也许有tidyverse / purrr?

recursion loops r purrr

2
推荐指数
1
解决办法
133
查看次数

标签 统计

r ×5

dplyr ×3

tidyverse ×2

broom ×1

dataframe ×1

function ×1

loops ×1

mean ×1

purrr ×1

recursion ×1

tidyr ×1

transpose ×1