我如何创建一个带有我正在寻找的 substr 名称的变量?
How can i create a variable with the name of the substr i am looking for?
我正在寻找一种我可以在 R 下执行的宏排序,以从另一个宏创建变量。我想知道在 ZZZ 变量中,字符串是否以某个 3 个第一个字符开头(通过使用 substr 函数)。所以我会用我正在寻找的字符串的名称来命名创建的变量。一些更明确的例子:
我的数据是这样的:
ZZZ
M41
M410
M42
F128
我想创建一个这样的循环:
data$xxx = ifelse(substr(data$ZZZ,1,3)=="xxx",1 ,0)
所以之后的数据看起来像:
ZZZ
M41
F12
M41
1
0
M410
1
0
M42
0
0
F128
0
1
因为我必须做一百多次,所以创建一个循环有助于减少程序的大小。
不知道在R下能不能做这种宏
感谢阅读,
血压
1) 假设末尾注释中的输入适用于目标值。
cbind(dat, +sapply(target, `==`, substr(dat$ZZZ, 1, 3)))
给予:
ZZZ M41 F12
1 M41 1 0
2 M410 1 0
3 M42 0 0
4 F128 0 1
2) 如果要在目标中使用 ZZZ 的每个元素,则使用
target <- unique(substr(dat$ZZZ, 1, 3))
而不是注释中显示的 target
的值。
3) 如果要在目标中使用 ZZZ 的每个元素,则另一种方法是:
res <- cbind(dat, model.matrix(~ substr(dat$ZZZ, 1, 3) + 0, dat))
names(res) <- sub(".*\)", "", names(res))
res
给予:
ZZZ F12 M41 M42
1 M41 0 1 0
2 M410 0 1 0
3 M42 0 0 1
4 F128 1 0 0
备注
target <- c("M41", "F12")
dat <- structure(list(ZZZ = c("M41", "M410", "M42", "F128")),
class = "data.frame", row.names = c(NA, -4L))
我正在寻找一种我可以在 R 下执行的宏排序,以从另一个宏创建变量。我想知道在 ZZZ 变量中,字符串是否以某个 3 个第一个字符开头(通过使用 substr 函数)。所以我会用我正在寻找的字符串的名称来命名创建的变量。一些更明确的例子:
我的数据是这样的:
ZZZ |
---|
M41 |
M410 |
M42 |
F128 |
我想创建一个这样的循环:
data$xxx = ifelse(substr(data$ZZZ,1,3)=="xxx",1 ,0)
所以之后的数据看起来像:
ZZZ | M41 | F12 |
---|---|---|
M41 | 1 | 0 |
M410 | 1 | 0 |
M42 | 0 | 0 |
F128 | 0 | 1 |
因为我必须做一百多次,所以创建一个循环有助于减少程序的大小。
不知道在R下能不能做这种宏
感谢阅读, 血压
1) 假设末尾注释中的输入适用于目标值。
cbind(dat, +sapply(target, `==`, substr(dat$ZZZ, 1, 3)))
给予:
ZZZ M41 F12
1 M41 1 0
2 M410 1 0
3 M42 0 0
4 F128 0 1
2) 如果要在目标中使用 ZZZ 的每个元素,则使用
target <- unique(substr(dat$ZZZ, 1, 3))
而不是注释中显示的 target
的值。
3) 如果要在目标中使用 ZZZ 的每个元素,则另一种方法是:
res <- cbind(dat, model.matrix(~ substr(dat$ZZZ, 1, 3) + 0, dat))
names(res) <- sub(".*\)", "", names(res))
res
给予:
ZZZ F12 M41 M42
1 M41 0 1 0
2 M410 0 1 0
3 M42 0 0 1
4 F128 1 0 0
备注
target <- c("M41", "F12")
dat <- structure(list(ZZZ = c("M41", "M410", "M42", "F128")),
class = "data.frame", row.names = c(NA, -4L))