Рассмотрим У меня есть ниже dataframeКак я могу конвертировать groupedData в Dataframe в R
AccountId,CloseDate
1,2015-05-07
2,2015-05-09
3,2015-05-01
4,2015-05-07
1,2015-05-09
1,2015-05-12
2,2015-05-12
3,2015-05-01
3,2015-05-01
3,2015-05-02
4,2015-05-17
1,2015-05-12
Я хочу, чтобы сгруппировать его, основываясь на ACCOUNTID, а затем я хочу добавить еще один столбец имен date_diff, который будет содержать разницу в CloseDate между текущей строкой и предыдущей строкой. Обратите внимание, что я хочу, чтобы этот параметр date_diff вычислялся только для строк, имеющих тот же AccountId. Поэтому мне нужно сгруппировать данные, прежде чем добавить еще один столбец
Ниже код R, который я использую
df <- read.df(sqlContext, "/home/ubuntu/work/csv/sample.csv", source = "com.databricks.spark.csv", inferSchema = "true", header="true")
df$CloseDate <- to_date(df$CloseDate)
groupedData <- SparkR::group_by(df, df$AccountId)
SparkR::mutate(groupedData, DiffCloseDt = as.numeric(SparkR::datediff((CloseDate),(SparkR::lag(CloseDate,1)))))
Чтобы добавить еще один столбец, я использую мутировать. Но поскольку group_by возвращает groupedData, я не могу использовать mutate здесь. Я получаю ошибку ниже
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘mutate’ for signature ‘"GroupedData"’
Так как я могу конвертировать GroupedData в Dataframe, так что я могу добавить столбцы с помощью мутировать?