【问题标题】:Run A For Loop on a Data Frame在数据帧上运行 For 循环
【发布时间】:2021-04-30 00:22:45
【问题描述】:

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

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

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

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

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

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

> year2017
[1] "333.3" "170.99" 

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

【问题讨论】:

  • 从您的第二个代码块中,您的数字似乎是字符串,是真的吗?
  • 不,数字在数据框中的一列中,我想为 Class 列中的每个值创建一个字符串子集,并在不通过多个步骤的情况下循环它。

标签: r dataframe for-loop


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-09-26
    • 2019-11-10
    • 1970-01-01
    • 2019-08-24
    • 2016-08-24
    • 1970-01-01
    • 2017-08-11
    • 2020-05-13
    • 2021-09-26
    相关资源
    最近更新 更多