r - 从查找表创建新变量

标签 r dataframe

我的数据集中有以下列:

presult     aresult
  I         single
  I         double
  I         triple
  I         home run
  SS        strikeout

我想添加第三列“bases”,它取决于列结果中结果的值。

例如,我希望单垒为 1,双垒为 2,三垒为 3,本垒打为 4,三振出垒为 0。

通常我会像这样创建新变量:
dataset$base<-ifelse(dataset$aresult=="single", 1, 0)

问题是我不知道如何在不将所有其他变量设置为零的情况下对新变量进行编码。

最佳答案

以下是如何使用命名向量进行查找:

定义测试数据:

dat <- data.frame(
    presult = c(rep("I", 4), "SS", "ZZ"),
    aresult = c("single", "double", "triple", "home run", "strikeout", "home run"),
    stringsAsFactors=FALSE
)

用分数定义一个命名的数字向量:
score <- c(single=1, double=2, triple=3, `home run`=4,  strikeout=0)

使用向量索引将分数与结果进行匹配:
dat$base <- score[dat$aresult]
dat
  presult   aresult base
1       I    single    1
2       I    double    2
3       I    triple    3
4       I  home run    4
5      SS strikeout    0
6      ZZ  home run    4

附加信息:

如果你不想手工构造命名向量,比如你有大量数据的情况,那么按照如下方式进行:
scores <- c(1:4, 5)
names(scores) <- c("single", "double", "triple", "home run", "strikeout")

(或者从现有数据中读取值和名称。重点是构造一个数值向量,然后分配名称。)

关于r - 从查找表创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8433523/

相关文章:

r - 使用 R 更改时间序列图中的 X 轴值

R levelplot colorkey标签和颜色范围

python - pandas,python,excel,在 df 1 的列中搜索子字符串以将字符串写入 df2 的列

Python df CSV 如何删除默认行号

python Pandas : applying different aggregate functions to different columns

r - Logit 刻度上的 Y 轴并以 gbm.plot 为中心

r - 子集数据框以仅包含在另一个因子的两个级别中都具有值的一个因子的级别

r - 防止 spData::world 国家环绕 map /裁剪 map 区域

python - 如何在 python pandas 的数据框中查找和更正拼写错误

python - 如何从 Pandas 数据框中的列表中删除值?