gpt4 book ai didi

r - 使用列名 (R) 更改数据表中的单元格值?

转载 作者:行者123 更新时间:2023-12-05 08:30:07 24 4
gpt4 key购买 nike

<分区>

我有一个包含 0 和 1 单元格的数据表。我想用列名更改列中的每个“1”,并用 NA 更改每个“0”。

set.seed(45)
DT = data.table(
names = c("n1", "n2", "n3", "n4", "n5"),
a = sample(c(0, 1), size = 5, replace = TRUE),
b = sample(c(0, 1), size = 5, replace = TRUE),
c = sample(c(0, 1), size = 5, replace = TRUE))

我从什么开始:

   names a b c
1: n1 0 1 1
2: n2 0 0 0
3: n3 1 0 0
4: n4 1 1 1
5: n5 0 0 1

我想要的:

   names  a  b  c
1: n1 NA b c
2: n2 NA NA NA
3: n3 a NA NA
4: n4 a b c
5: n5 NA NA c

如果尝试按列更改,这里是第 2 列。我用 NA 更改所有 0 - 而 1 保持不变。我尝试用 DT[x, 2] <- colnames(DT)[2] 改变 1s但它不起作用。它被注释掉了,因为如果我运行它,1 和 0 都会变成 NA。

for (x in c(1:nrow(DT))) {
test <- as.integer(DT[x, 2])
if (test == 1) {
#DT[x, 2] <- colnames(DT)[2]
}
else {
DT[x, 2] <- NA
}
}

此外,如果我尝试使用变量设置列号,以便更轻松地为所有列执行此操作。它调用错误。

col <- 2
for (x in c(1:nrow(DT))) {
test <- as.integer(DT[x, col])
if (test == 1) {
#DT[x, 2] <- colnames(DT)[col]
}
else {
DT[x, col] <- NA
}
}

如果我尝试使用 for 循环遍历列和行,则相同。


for (c in c(2:4)) {
for (r in c(1:nrow(DT))) {
test <- as.integer(DT[r, c])
if (test == 1) {
print("yes")
#DT[r, c] <- colnames(DT)[c]
}
else {
DT[r, c] <- NA
}
}
}

谁能帮我找出错误?或者是否有一些包可以为我做这件事?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com