基于R中其他变量的值重命名分类变量
我有一个样本数据集“a”,如下所示:基于R中其他变量的值重命名分类变量,r,R,我有一个样本数据集“a”,如下所示: > a group marks upd class 1 T 2 up A 2 C 3 up <NA> 3 C 4 down B 4 T 5 up <NA> 5 T 6 down D 6 C 7 up <NA> 7 T 1 down <NA>
> a
group marks upd class
1 T 2 up A
2 C 3 up <NA>
3 C 4 down B
4 T 5 up <NA>
5 T 6 down D
6 C 7 up <NA>
7 T 1 down <NA>
8 T 0 down G
>a
upd组分数
1吨2升1吨
2c3以上
3 C 4向下B
4吨5升
5 T 6向下D
6C7以上
7吨1下
8吨0克
这里,对于每个组(T或C),在“class”变量中都有值为空的记录。现在,对于类为null的每个组,我希望该组分别重命名为T-null或C-null。如果组(T或c)在“类”中有一些值,则组名应保持原样。我们如何用R来编写代码呢?我们可以使用
data.table
。根据“类”中NA值的逻辑条件,将“data.frame”转换为“data.table”,我们将空字符串粘贴到“group”列,并将修改后的字符串分配给“group”
library(data.table)
setDT(a)[is.na(class), group := paste(group, "NULL", sep="-")]
a
# group marks upd class
#1: T 2 up A
#2: C-NULL 3 up NA
#3: C 4 down B
#4: T-NULL 5 up NA
#5: T 6 down D
#6: C-NULL 7 up NA
#7: T-NULL 1 down NA
#8: T 0 down G
或使用
base R
a$group[is.na(a$class)] <- paste(a$group[is.na(a$class)], "NULL", sep="-")
a$group[is.na(a$class)]我们可以使用data.table
。根据“类”中NA值的逻辑条件,将“data.frame”转换为“data.table”,我们将空字符串粘贴到“group”列,并将修改后的字符串分配给“group”
library(data.table)
setDT(a)[is.na(class), group := paste(group, "NULL", sep="-")]
a
# group marks upd class
#1: T 2 up A
#2: C-NULL 3 up NA
#3: C 4 down B
#4: T-NULL 5 up NA
#5: T 6 down D
#6: C-NULL 7 up NA
#7: T-NULL 1 down NA
#8: T 0 down G
或使用base R
a$group[is.na(a$class)] <- paste(a$group[is.na(a$class)], "NULL", sep="-")
a$group[is.na(a$class)]试试这个
a$group = paste0(a$group, ifelse(is.na(a$class), "-NULL", ""))
试试这个
a$group = paste0(a$group, ifelse(is.na(a$class), "-NULL", ""))
(1) 你试过什么?(2) 组是因子还是字符?(3) 分组在这里似乎并不重要。(4) 请提供一个可复制的例子。(1)你尝试过什么?(2) 组是因子还是字符?(3) 分组在这里似乎并不重要。(4) 请提供一个可复制的示例。最后一个示例对于任何数量的组值都是非常好的解决方案。很好@Gopala数据。表
分配会很快,因为它发生在原地。同意,尽管我不使用它们。在数据帧上使用dplyr
。最后一个对于任意数量的组值都是一个很好的解决方案。很好@Gopala数据。表
分配会很快,因为它发生在原地。同意,尽管我不使用它们。在数据帧上使用dplyr
。如果只粘贴相关值,则将时间粘贴为零似乎是一种浪费。如果只粘贴相关值,则将时间粘贴为零似乎是一种浪费。