【发布时间】:2020-05-04 16:08:47
【问题描述】:
我想使用dplyr 中的ntile 函数或数据框列表上的类似函数,但对每个数据框使用不同的n。我的列表包含 150 个数据框,因此像下面这样的手动解决方案将不起作用。如何重写下面的代码以作用于数据框列表并返回带有新列的数据框列表?
library(tidyverse)
iris_list=split(iris,iris$Species)
iris_setosa=iris_list[[1]]
iris_versicolor=iris_list[[2]]
iris_virginica=iris_list[[3]]
iris_setosa$n3=ntile(iris_setosa$Sepal.Length,3)
iris_versicolor$n5=ntile(iris_setosa$Sepal.Length,5)
iris_virginica$n7=ntile(iris_setosa$Sepal.Length,7)
最终的结果应该是这样的
final_list=list(iris_setosa,iris_versicolor,iris_virginica)
head(final_list[[1]])
Sepal.Length Sepal.Width Petal.Length Petal.Width Species n3
1 5.1 3.5 1.4 0.2 setosa 2
2 4.9 3.0 1.4 0.2 setosa 1
3 4.7 3.2 1.3 0.2 setosa 1
4 4.6 3.1 1.5 0.2 setosa 1
5 5.0 3.6 1.4 0.2 setosa 2
6 5.4 3.9 1.7 0.4 setosa 3
【问题讨论】:
标签: r dplyr data-manipulation