user-> status of user.
alexa -> Enter user id.
user -> 123456
alexa -> status of user Active.
我有一个价格栏。我只需要消除连续的repititve值的新列。请提出建议。在第一行中,由于27.82是连续重复的,因此应将其设置为1,而输出应为27.82 / 23.65 / 27.82
答案 0 :(得分:0)
test=c("27.82 / 27.82 / 23.65 / 27.82","19.87 / 19.87 / 19.14 / 19.87","32.25 / 32.25 / 31 / 32.25 / 31","79.39 / 79.39 / 79.39 / 79.39 / 83.36 / 79.39")
unlist(lapply(strsplit(test," / "),function(x) paste(rle(x)$values,collapse=" / ")))
基本上,我在test
中建立了您的价格向量。这是怎么回事:
uniq
检查重复的连续元素(例如Unix rle
),这会生成一个列表,其中包含一个名为values
的元素,其中的值是唯一的被存储。 paste
paste
将所有这些值{collapse}选项用于将分隔符设置为以前使用的分隔符。unlist
将其生成一列。输出:
> unlist(lapply(strsplit(test," / "),function(x) paste(rle(x)$values,collapse=" / ")))
[1] "27.82 / 23.65 / 27.82" "19.87 / 19.14 / 19.87" "32.25 / 31 / 32.25 / 31" "79.39 / 83.36 / 79.39"
顺便说一句,下一次,如果您为社区提供了可复制的示例(这样,读者不必自己将数据写到对象中),那就更好了,并显示到目前为止您已经尝试了什么。
答案 1 :(得分:0)
使用Get-Date -Uformat "%Y-%m-%d"
的方法略有不同:
数据
tidyverse
代码
vect <- c('27.82 / 27.82 / 23.65 / 27.82',
'19.87 / 19.87 / 19.14 / 19.87',
'32.25 / 32.25 / 31 / 32.25 / 31',
'79.39 / 79.39 / 79.39 / 79.39 / 83.36 / 79.39')
输出
library(tidyverse)
vect %>%
str_split( ' / ') %>%
map(~.x[.x!=lag(.x) | is.na(lag(.x))]) %>%
map_chr(paste, collapse=' / ')
答案 2 :(得分:0)
数据: data <-data.frame(Des = c(“ a”,“ b”,“ c”,“ d”),price = c('27 .82 / 27.82 / 23.65 / 27.82','19 .87 / 19.87 / 19.14 / 19.87 ','32 .25 / 32.25 / 31 / 32.25 / 32.25','79.39 / 79.39 / 79.39 / 79.39 / 83.36 / 79.39'))
Des price 1 a 27.82 / 27.82 / 23.65 / 27.82 2 b 19.87 / 19.87 / 19.14 / 19.87 3 c 32.25 / 32.25 / 31 / 32.25 / 31 4 d 79.39 / 79.39 / 79.39 / 79.39 / 83.36 / 79.39
代码:
data$`New Column`<-gsub("\\b([\\w\\.]+)( / \\1\\b)+","\\1",data$price,perl = T)
结果:
Des price New Column 1 a 27.82 / 27.82 / 23.65 / 27.82 27.82 / 23.65 / 27.82 2 b 19.87 / 19.87 / 19.14 / 19.87 19.87 / 19.14 / 19.87 3 c 32.25 / 32.25 / 31 / 32.25 / 31 32.25 / 31 / 32.25 / 31 4 d 79.39 / 79.39 / 79.39 / 79.39 / 83.36 / 79.39 79.39 / 83.36 / 79.39