簡體   English   中英

如果在 R dataframe 中添加計算字段

[英]ifelse add a calculated field in R dataframe

大家好,我正在嘗試同時使用多個條件將計算字段添加到 R 中的數據框中。

我有以下名為 df 的數據框

     ID A                 AA          AAA        AAAA   AAAAA
1     1 a                 no            57         10     100.0%
2     2 b                 no            32          7      70.0%
3     3 c                yes            30          7      70.0%
4     4 d                 no            52          7      70.0%

我想添加一個名為 Z 的新字段,其條件如下,如果為真,則基本上添加 25%

ifelse(df$AA=="yes",0.25,0) + ifelse(df$AAA<30,0.25,0) + ifelse(df$AAAA>4,0.25,0)

所以我添加了以下代碼

df$Z<-as.data.frame(ifelse(df$AA=="yes",0.25,0)+ifelse(df$AAA<30,0.25,0)+ifelse(df$AAAA>4,0.25,0))

但我收到以下錯誤

Error in `$<-.data.frame`(`*tmp*`, Z, value = list(`ifelse(df$AA=="yes",0.25,0)+ifelse(df$AAA<30,0.25,0)+ifelse(df$AAAA>4,0.25,0)` = numeric(0))) : 
  replacement has 0 rows, data has 200

我想我正在嘗試將 excel 公式轉換為 R

=IF(C2="yes";25%;0)+IF(D2<30;25%;0)+IF(E2>4;25%;0)

此致

在最后一列中,如果您有'%'符號,則在進行比較之前將其刪除。

df$AAAAA <- as.numeric(sub('%', '', df$AAAAA))
df$Z <- with(df, ifelse(AA=="yes",0.25,0) + ifelse(AAA<30,0.25,0) +
                 ifelse(AAAA>4,0.25,0))

您也可以在沒有ifelse情況下執行此操作

df$Z <- with(df, (AA == 'yes') * 0.25 + (AAA < 30) * 0.25 + (AAAA > 4) * 0.25)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM