如果语句基于R中的重复行创建新列

时间:2017-05-30 17:43:15

标签: sql r

我想基于它是否是重复行来创建新列。我按用户#日期订购了我的数据。我希望新列检查第一列中的值是否等于之前的行,然后对日期执行相同操作。

例如,我有前两列数据,并希望在第3列中创建一个布尔数组,无论它是否是新一天的新用户:

User#   Date     Unique   
1       1/1/17    1 
1       1/1/17    0
1       1/2/17    1
2       1/1/17    1
3       1/1/17    1
3       1/2/17    1

2 个答案:

答案 0 :(得分:0)

样本数据集中可能存在拼写错误,因为根据给定标准,最后一行是唯一的

df1$Unique <- c(1, diff(df1$User) != 0 | diff(df1$Date) != 0)

  User       Date Unique
1    1 2017-01-01      1
2    1 2017-01-01      0
3    1 2017-01-02      1
4    2 2017-01-01      1
5    3 2017-01-01      1
6    3 2017-01-02      1

<强>更新

如果用户存储为因子,则以下内容将起作用

User <- c(1, 1, 1, 2, 3, 3)
User <- letters[User]
Date <- c("1/1/17", "1/1/17", "1/4/17", "1/1/17", "1/1/17", "1/2/17")
df1 <- data.frame(User, Date)
df1$Date <- as.Date(df1$Date, "%m/%d/%y")

df1$Unique <- c(1, diff(as.numeric(df1$User)) != 0 | diff(df1$Date) > 1)

  User       Date Unique
1    a 2017-01-01      1
2    a 2017-01-01      0
3    a 2017-01-04      1
4    b 2017-01-01      1
5    c 2017-01-01      1
6    c 2017-01-02      0

答案 1 :(得分:0)

这可能会为您提供所需的内容

create or replace type id_array_input VARRAY(20) OF NUMBER

create or replace type output_data_array VARRAY(20) OF VARCHAR(25)