【问题标题】:Assign value in one column if character in other column is x in R如果另一列中的字符是 R 中的 x,则在一列中赋值
【发布时间】:2020-04-30 15:00:56
【问题描述】:

如果另一列中的字符是 x,我正在尝试在列中分配特定的整数/数字。我有 5 个字符在列中重复,在新列中我需要为每个重复字符分配一个数字。基本上,这 5 个字符中的每一个都有一个特定的数字,需要进入新列。请帮忙!

【问题讨论】:

  • 请添加更多关于您迄今为止尝试过的信息。添加代码 sn-p 尝试解决问题,以便 StackOverflow 用户获得帮助。

标签: r for-loop if-statement


【解决方案1】:

以下是我认为您的任务的两种解决方案(有点难以判断,因为您没有提供任何具体数据)。 假设这是(像)您的数据:

 df <- data.frame(col1 = sample(LETTERS[1:5], 10, replace = T))

解决方案 1base R

df$new <- ifelse(df$col1 == "A", 1,
                 ifelse(df$col1 == "B", 2,
                        ifelse(df$col1 == "C", 3,
                               ifelse(df$col1 == "D", 4, 5))))

解决方案 2dplyr

library(dplyr)
df$new <- df %>% 
  mutate(col1 = case_when(col1 == "A" ~ 1,
                          col1 == "B" ~ 2,
                          col1 == "C" ~ 3,
                          col1 == "D" ~ 4,
                          TRUE        ~ 5))

结果是一样的:

df
   col1 new
1     E   5
2     C   3
3     D   4
4     C   3
5     A   1
6     E   5
7     B   2
8     A   1
9     B   2
10    E   5

【讨论】:

    猜你喜欢
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2021-10-05
    • 2019-05-26
    相关资源
    最近更新 更多