R 创建可以评估列并在新列中给出输出的函数
这是我的第一个问题,所以我会尽可能详细地回答 我正在尝试创建一个函数,在该函数中,我可以根据原始列是否列出日期或是否没有值,生成一个包含“1”或“0”作为输出的新列。下面是我试图实现的一个小例子:R 创建可以评估列并在新列中给出输出的函数,r,function,if-statement,R,Function,If Statement,这是我的第一个问题,所以我会尽可能详细地回答 我正在尝试创建一个函数,在该函数中,我可以根据原始列是否列出日期或是否没有值,生成一个包含“1”或“0”作为输出的新列。下面是我试图实现的一个小例子: Column 1 New Column Obs.1 4/23/2012 1 Obs.2 0 Obs.3 1/23/2016 1 我不知道该怎么做。我曾尝试将
Column 1 New Column
Obs.1 4/23/2012 1
Obs.2 0
Obs.3 1/23/2016 1
我不知道该怎么做。我曾尝试将tapply()
和ifelse()
结合使用,但没有任何可行的代码。这就是我想要的:
TextToNumb <- function(df$column){
Ifelse(df$column > 0, 1, 0)
return(df$newcolumn
}
TextToNumb 0,1,0)
返回(df$newcolumn)
}
非常感谢您的帮助,谢谢!tidyverse是您的朋友
library(tidyverse) ## This will call multiple packages including dplyr
library(magrittr) ## This makes assignment back to the original dataframe by %<>%
df <- data_frame(Date = c("4/23/2012", "", "1/23/2016"))
df %<>% dplyr::mutate(Bin = ifelse(Date != "", 1, 0))
如果足以检查是否存在某些内容,则可以使用第一个代码。如果您对R比较陌生,则可以从阅读开始,这是一本很棒的书。除了@Kim的回答之外,这可能更直接:
df <- data_frame(Date = c("4/23/2012", NA, "1/23/2016"))
df %<>% mutate(Bin = ifelse(is.na(Date), 0, 1))
df这里有一种方法是使用baseR
,利用有时有用的行为
df$is_date = as.numeric(!is.na(df$date))
我们使用向量化函数is.na
测试date
列中的每个元素是否为空值,这为我们提供了一个布尔/逻辑向量TRUE
/FALSE
。在使用!
反转这些值之后,我们可以简单地将它们转换为二进制整数,使用作为.numeric
,因为在R中
、TRUE
和FALSE
实际上与1和0相同:
TRUE == 1
[1] TRUE
FALSE == 0
[1] TRUE
谢谢。我对tidyverse有点熟悉,我有dplyr、lubridate和ggplot2,但没有使用magrittr。(我从单个软件包开始,没有意识到有一整套).我对R比较陌生,目前正在参加一些数据营课程和edX统计与R课程。是否有一种方法可以根据是否存在任何值而不仅仅是日期来分配值?(例如,值345表示1,而空白表示0)?
TRUE == 1
[1] TRUE
FALSE == 0
[1] TRUE