在数据帧上运行 For 循环

时间:2021-04-30 00:22:45

标签: r dataframe for-loop

我有一个如下所示的数据框:

draftclasses
Name Yards TDs Class
Joe Smith 333.3 34 2017
Carson Mathers 386.2 22 2021
Bo Someome 345.2 22 2022
Im Notgood 170.99 7 2017

我想要做的是获取 Yards 列中每个值的所有 Class 子集。我知道要过滤掉数据框的一个子集:

year2021 = draftclass[!is.na(draftclasses$Yards) & draftclasses$Class == 2022,]

我也知道我会使用 for 循环,但不知道如何设计它。我已经在网上阅读了一些内容,但我仍然不确定如何运行循环来获取 Class 列中每年的此输入。

理想情况下,我希望每年在 Class 中用一串与类相关的所有码数标记一个对象,如下所示:

> year2017
[1] "333.3" "170.99" 

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

split 的帮助下,我们可以为每个 split Yards Class

result <- split(draftclasses$Yards, draftclasses$Class)

这将返回 result 中的一个列表,如果您希望每个 Class 都有一个单独的向量,您可以命名该列表并使用 list2env

names(result) <- paste0('year', names(result))
list2env(result, .GlobalEnv)

year2017
#[1] 333.30 170.99

year2021
#[1] 386.2

year2022
#[1] 345.2