【问题标题】:ifelse for different locations in a stringifelse 用于字符串中的不同位置
【发布时间】:2020-05-07 10:18:52
【问题描述】:

我想帮助我在字符串变量 x1 上使用 ifelse 语句创建分类值(称为 x2)。或者当然不是'ifelse',但我认为它应该与'ifelse'一起使用?

image of dataframe

输入的数据框:
患者编号 x1

来自 x1 的类是“字符”。 x1 中的字符有多种含义。

如果 x1 中的第一个字符 == 1,那么我希望新变量 x2 变为“是”,如果不是,则为“否”。我所做的是:使用 substr 创建一个新列(称为 x1.1),然后在该新列上使用 ifelse 语句,这样就可以了。

data$x1.1

data$x2

image of dataframe with added x1.1 and x2

但我想知道我是否可以做得更短。因此无需创建 x1.1 即可获得 x2。我有这样的想法,但它不起作用:

data$x2

对于患者 1,如果 x1 中的第一个字符 == 1,则新列 x2 中的结果 == 'yes',如果不是,则 'no'

对于患者 2,如果 x1 中的第一个字符 == 1,则新列 x2 中的结果 == 'yes',如果不是,则 'no'

对于患者 3,如果 x1 中的第一个字符 == 1,则新列 x2 中的结果 == 'yes',如果不是,则 'no'

此外,除了看第一个字符,我还希望能够:

-看第二个字符

-一起看第二个+第三个字符

我有一种方法可以做到这一点,但我实际上不是只有一个 x1,而是 x1、x2 x3....x29 x30。其中有 4 种含义,所以“按照我的方式”进行操作意味着我首先必须先创建 120 个新列,然后才能开始创建正确的相应分类列。它使我的数据框更大,并提供了很多我想阻止的代码行。

我希望这个社区可以帮助我。干杯:)

附: 这是我在 stackoverflow 上的第一篇文章,如果您有关于如何使我的文章更好的提示,请告诉我(我已经看过一些 youtube 视频,但它们没有帮助,我最大的问题是如何在好方法)

附:我使用了搜索功能,但找不到这个问题的答案。

【问题讨论】:

    标签: r if-statement substr


    【解决方案1】:

    试试这个:

    data$x2 <- ifelse(substr(x1, 1, 1) == "1", "yes", "no")
    

    如果您需要多个 ifelse 语句,也可以查看 dplyr::case_when

    【讨论】:

    • 非常感谢!我只需要在您的代码中添加“data$”,但它现在可以工作了。这也回答了我的其他问题。谢谢:) data$x2
    • 我有一个后续问题。之前我只在 x1 上做了一个 ifelse,但如果还有一个 x11、x12 和 x13 怎么办。因此,如果 x1、x11、x12 或 x13 的第一个字符为真,则结果为“是”。我想出了这段代码,但结果每次都是“不”。你可以 jroman 或其他人帮忙吗? data$x2
    猜你喜欢
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多