首页 > 解决方案 > 根据另一列将某些值分配给 data.table 中的列

问题描述

我有一个data.table( dataframe)。我可以根据另一列(基于如下图所示的列)创建一个具有某些值的新列吗?

例如,我可以A使用 values =创建一个名为 的新列c (1.2,5.6,10.3,20.4),并使其与S4,S9,S5,S10column对应stimulus吗?

在此处输入图像描述

标签: rdataframedata.table

解决方案


一个更简单的选择是转换为factor指定levelsunique列的元素并强制转换为整数as.integer

df1$A <- as.integer(factor(df1$stimulus, levels = unique(df1$stimulus)))

match使用unique

df1$A <- with(df1, match(stimulus, unique(stimulus)))

-更新

如果它需要自定义值,一个选项也可以labels指定levels

df1$A <- with(df, as.numeric(as.character(factor(stimulus,
       levels = c("S4", "S9", "S5", "S10"), c("1.1", "2.2", "3.2" , "5.8")))))

或者更好的选择可能是与键/值数据集进行连接/合并

keydat <- data.frame(stimulus = c("S4", "S9", "S5", "S10"),
            A = c(1.1, 2.2, 3.2, 5.8))
df2 <- merge(df1, keydat, all.x = TRUE)

推荐阅读