R中有没有办法创建一个新列,根据其他列分配值? [复制]

Posted

技术标签:

【中文标题】R中有没有办法创建一个新列,根据其他列分配值? [复制]【英文标题】:Is there a way in R to create a new column, assigning values conditional on other columns? [duplicate] 【发布时间】:2021-12-11 04:52:16 【问题描述】:

我有一个包含多个日期和相关数据/变量的数据框。我希望在数据框中创建一个新列,根据另一列的日期将 Yes 或 No 变量分配给新列。例如,Date1 之前的所有日期在新列中都需要一个“是”,而 Date1 之后的所有日期在新列中都需要一个“否”。我该怎么做?

【问题讨论】:

欢迎来到 SO,朱莉娅麦克唐纳!请让这个问题可重现。这包括您尝试过的示例代码(包括列出非基本 R 包,以及收到的任何错误/警告)、示例明确数据(例如,data.frame(x=...,y=...) 或来自dput(head(x)) 的输出),和给定输入的预期输出。参考:***.com/q/5963269、minimal reproducible example 和 ***.com/tags/r/info。 但另一个想法是:每周有几十个问题几乎都问相同的标题/问题。请在 SO 周围搜索类似的问题。对你来说这可能是一个更好的解决方案:(1)你可以看到许多已经写好的类似问题的解决方案,而无需等待我们看到、尝试和回答;更重要的是(2)我们没有您的数据并且您没有提供任何尝试的努力或代码,因此有人猜测的机会非常低。请阅读我上面提供的链接,它们非常有帮助,可以帮助您更快地获得更好的答案。谢谢! 这能回答你的问题吗? Can dplyr package be used for conditional mutating? 【参考方案1】:

基于二进制测试添加新列的最简单方法是使用基本 R ifelse 函数。这是一个使用 mtcars 并测试 mpg >= 25 的示例,并将新列 testtest2 添加到数据框中。 test2 说明创建一个新的二进制列作为逻辑类型:

cars <- mtcars
cars$test <- ifelse(cars$mpg >= 25, "Yes", "No")
cars$test2 <- ifelse(cars$mpg >= 25, TRUE, FALSE)
head(cars, 5)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb test test2
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4   No FALSE
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4   No FALSE
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1   No FALSE
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1   No FALSE
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2   No FALSE

您可以对日期值使用逻辑比较运算符。

【讨论】:

以上是关于R中有没有办法创建一个新列,根据其他列分配值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

根据两个 pandas DataFrames 之间的条件为新列分配值

在 R 中,如何使用各种条件将数字列变为一个新列?

循环以基于Python Dataframe中的其他列值创建新列[重复]

如何根据一个数据帧中的列值和R中另一个数据帧的列标题名称有条件地创建新列

R - 创建几列非零最小值的新列

根据其他列中的值在 python 3 (pandas) 数据框中创建新列