计数 ("; ") +1 有一个包含尚未拆分的变量的表。 # Dataset call df-6ren">
gpt4 book ai didi

r - 检查一个变量 R 中各种 DATE 的差异

转载 作者:行者123 更新时间:2023-12-04 12:29:55 26 4
gpt4 key购买 nike

我想在 时分割线变量包含不同的 YEAR ,
还拆分 col : "Price"与出现的日期数均分
--> 计数 ("; ") +1

有一个包含尚未拆分的变量的表。

# Dataset call df 

Price Date
500 2016-01-01
400 2016-01-03;2016-01-09
1000 2016-01-04;2017-09-01;2017-08-10;2018-01-01
25 2016-01-04;2017-09-01
304 2015-01-02
238 2018-01-02;2018-02-02

欲望展望
# Targeted df
Price Date
500 2016-01-01
400 2016-01-03;2016-01-09
250 2016-01-04
250 2017-09-01
250 2017-08-10
250 2018-01-01
12.5 2016-01-04
12.5 2017-09-01
304 2015-01-02
238 2018-01-02;2018-02-02

一旦定义了包含不同年份的变量,下面是操作
必须做。(这只是一个例子。)
mutate(Price = ifelse(DIFFERENT_DATE_ROW,
as.numeric(Price) / (str_count(Date,";")+1),
as.numeric(Price)),
Date = ifelse(DIFFERENT_DATE_ROW,
strsplit(as.character(Date),";"),
Date)) %>%
unnest()

我遇到一些不能使用 dplyr 函数的约束 "if_else"因为
否则无操作 无法识别。只有 ifelse 才能正常工作。

如何找出一个变量中的年份差异
挑起分割线和分割价格计算?

到目前为止,拆分元素的操作如下
unlist(lapply(unlist(strsplit(df1$noFDate[8],";")),FUN = year))

无法解决问题。

我是编码初学者,考虑到实际数据有超过 200 万行和 50 列,请随时更改上述所有操作。

最佳答案

这可能不是最有效的方法,但可用于获得所需的答案。

#Get the row indices which we need to separate
inds <- sapply(strsplit(df$Date, ";"), function(x)
#Format the date into year and count number of unique values
#Return TRUE if number of unique values is greater than 1
length(unique(format(as.Date(x), "%Y"))) > 1
)

library(tidyverse)
library(stringr)

#Select those indices
df[inds, ] %>%
# divide the price by number of dates in that row
mutate(Price = Price / (str_count(Date,";") + 1)) %>%
# separate `;` delimited values in separate rows
separate_rows(Date, sep = ";") %>%
# bind the remaining rows as it is
bind_rows(df[!inds,])


# Price Date
#1 250.0 2016-01-04
#2 250.0 2017-09-01
#3 250.0 2017-08-10
#4 250.0 2018-01-01
#5 12.5 2016-01-04
#6 12.5 2017-09-01
#7 500.0 2016-01-01
#8 400.0 2016-01-03;2016-01-09
#9 304.0 2015-01-02
#10 238.0 2018-01-02;2018-02-02

关于r - 检查一个变量 R 中各种 DATE 的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49645818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com