相关疑难解决方法(0)

使用dplyr将函数应用于表的每一行?

在使用plyrI 时,我经常发现使用adply标量函数很有用,我必须将其应用于每一行.

例如

data(iris)
library(plyr)
head(
     adply(iris, 1, transform , Max.Len= max(Sepal.Length,Petal.Length))
    )
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species Max.Len
1          5.1         3.5          1.4         0.2  setosa     5.1
2          4.9         3.0          1.4         0.2  setosa     4.9
3          4.7         3.2          1.3         0.2  setosa     4.7
4          4.6         3.1          1.5         0.2  setosa     4.6
5          5.0         3.6          1.4         0.2  setosa     5.0
6          5.4         3.9          1.7         0.4  setosa     5.4
Run Code Online (Sandbox Code Playgroud)

现在我正在使用dplyr更多,我想知道是否有一个整洁/自然的方式来做到这一点?因为这不是我想要的:

library(dplyr)
head(
     mutate(iris, Max.Len= max(Sepal.Length,Petal.Length))
    )
  Sepal.Length Sepal.Width Petal.Length Petal.Width …
Run Code Online (Sandbox Code Playgroud)

r plyr dplyr

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

在列的子集上执行dplyr mutate

我有一个像这样的data.frame(真正的数据集有更多的行和列)

set.seed(15)
dd <- data.frame(id=letters[1:4], matrix(runif(5*4), nrow=4))

#   id        X1        X2        X3        X4        X5
# 1  a 0.6021140 0.3670719 0.6872308 0.5090904 0.4474437
# 2  b 0.1950439 0.9888592 0.8314290 0.7066286 0.9646670
# 3  c 0.9664587 0.8151934 0.1046694 0.8623137 0.1411871
# 4  d 0.6509055 0.2539684 0.6461509 0.8417851 0.7767125
Run Code Online (Sandbox Code Playgroud)

我希望能够编写一个dplyr语句,我可以在其中选择列的子集并对其进行修改.(我正在尝试做类似于在data.table中使用.SDcols的东西).

对于一个简化的例子,这里是我希望能够编写的函数,用于为保持所有其他列的偶数"X"列的和和平均值添加列.使用基数R的期望输出是

(cols<-paste0("X", c(2,4)))
# [1] "X2" "X4"
cbind(dd,evensum=rowSums(dd[,cols]),evenmean=rowMeans(dd[,cols]))

#   id        X1        X2        X3        X4        X5   evensum  evenmean
# 1  a 0.6021140 0.3670719 0.6872308 0.5090904 0.4474437 0.8761623 0.4380811
# 2  b 0.1950439 0.9888592 0.8314290 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

19
推荐指数
1
解决办法
6579
查看次数

使用dplyr在所选列上添加具有行方式意义的列

我有一个包含这得到了在不同时间点测量多个变量的数据帧(例如test1_tp1,test1_tp2,test1_tp3,test2_tp1,test2_tp2,...).

我现在尝试使用dplyr向数据框添加新列,该数据框计算这些列的选择上的行方式(例如,在所有时间点上的平均值test1).

  1. 即使使用用于计算显式命名列的平均值的语法,我也很困难.我没有成功的尝试是:

data %>% ... %>% mutate(test1_mean = mean(test1_tp1, test1_tp2, test1_tp3, na.rm = TRUE)

  1. 我还想使用正则表达式/通配符来选择列名,所以像

data %>% ... %>% mutate(test1_mean = mean(matches("test1_.*"), na.rm = TRUE)

regex r dplyr

4
推荐指数
1
解决办法
2101
查看次数

标签 统计

dplyr ×3

r ×3

plyr ×1

regex ×1