【发布时间】:2019-04-11 07:40:18
【问题描述】:
在 RStudio 中,我想向数据框添加两个新列。这两列应根据数据框中已存在列的条件语句填充文本。
数据帧
变量为:数字c(1,2,3,4等)
我需要一个代码(语句),根据“数字”列中的数字创建和填写两个新列“type_a”和“type_b”。我必须使用确切的数字,所以“如果“数字”中的 1 用“some_text1”填写“type_a”,用“some_text2”填写“type_b”。下一行将是“如果“数字”中的 2 或 3 填写用“some_text3”输出“type_a”,用“some_text4”输出“type_b”。
这应该相当简单,但是,我是 R 新手,目前正在学习课程。
谢谢,
编辑:
感谢下面的答案,我现在已经设法用这段代码做我想做的事。现在的问题是,我能否以某种方式在第一个“case_when”中包含“type_b”语句,这样我就不必写两次数字列表,还是每个“case_when”只能包含一列? (在 SAS 中,我会先创建两列 type_a 和 type_b,然后写“if number in (1,2,4,6) then do; type_a='some_text'; type_b ='some_text2; end;)。
谢谢
ds <- tibble(number = 1:6)
ds %>%
mutate(
type_a = case_when(
number %in% c(1,2,4,6) ~ "some_text", TRUE ~ NA_character_
),
type_b = case_when(
number %in% c(1,2,4,6) ~ "some_text2", TRUE ~NA_character_
)
)
#The code below do not work, but hopefully you get the idea!
library(tidyverse)
ds <- tibble(number = 1:6)
ds %>%
mutate(
type_a, type_b = case_when(
number %in% c(1,2,4,6) ~ "some_text", ~ "some_text2",
TRUE ~ NA_character_))
【问题讨论】:
-
欢迎来到 StackOverlflow。请查看如何在此处提供最小可重复示例,并确保添加您拥有的数据和您期望的数据。 stackoverflow.com/questions/5963269/…
-
除上述内容外,请发布预期输出,当然还有您的尝试以及失败的地方
-
您可以使用您的数字创建一个变量,并在您调用
case_when时使用它,即my_numbers <- c(1, 2, 4, 6),然后将number %in% my_numbers作为case_when公式的左侧. -
问题是我在另一个数据集中有大约 200 个数字,每组 3-5 个。因此,每次我想添加一列时,我仍然必须编写相同的 30-40 个向量名称。
标签: r