首页 > 解决方案 > R中的占位符

问题描述

我有一个数据集,其中不同的值只能按 digit 的出现进行分类1。所有值均由 5 位数字组成。现在我需要创建一个对值进行分组的新变量。我现在的问题是,是否有类似于 Excel 的方法来设置占位符以识别以1.

到目前为止我所做的是:

w$r <- ifelse(w$f == 1****, 1, 0)

在这里,我想过滤掉1第一位数字的所有值。值得注意的是,某些值具有重复出现的1,即 2 位数字。所有变量要么有 1,要么为零。数据的示例是 00000、00001、11100 等。目标是在不同位置为每个 1 创建一个变量。例如,第一个数字应该是一个变量,但如果出现 1 也是一个变量,因为在创建的变量 1 和变量 3 中需要考虑第一个和第三个数字。

标签: rif-statement

解决方案


编辑

不太确定这是否是你想要的,但这里有一个尝试:

资料

由于您似乎也有前导零的数据,因此您需要将它们转换为字符:

df <- data.frame(w = c("00000", "00001", "11100", "10010", "11000", "10000", "10100", "00100", "10001"))

解决方案

# variable for "1" in first position:
df$r1 <- ifelse(grepl("^1", df$w), 1, 0)

# variable for "1" in second position:
df$r2 <- ifelse(grepl("^\\d1", df$w), 1, 0)

# variable for "1" in third position:
df$r3 <- ifelse(grepl("^\\d{2}1", df$w), 1, 0)

# variable for "1" in fourth position:
df$r4 <- ifelse(grepl("^\\d{3}1", df$w), 1, 0)

# variable for "1" in fifth position:
df$r5 <- ifelse(grepl("^\\d{4}1", df$w), 1, 0)

结果

df
      w r r2 r3 r4
1 00000 0  0  0  0
2 00001 0  0  0  1
3 11100 1  1  1  0
4 10010 1  0  0  0
5 11000 1  1  0  0
6 10000 1  0  0  0
7 10100 1  0  1  0
8 00100 0  0  1  0
9 10001 1  0  0  1

推荐阅读