小编jal*_*pic的帖子

确定最大数量和最长时间间隔集

假设我的数据看起来像这样:

   level   start     end
1      1 133.631 825.141
2      2 133.631 155.953
3      3 146.844 155.953
4      2 293.754 302.196
5      3 293.754 302.196
6      4 293.754 301.428
7      2 326.253 343.436
8      3 326.253 343.436
9      4 333.827 343.436
10     2 578.066 611.766
11     3 578.066 611.766
12     4 578.066 587.876
13     4 598.052 611.766
14     2 811.228 825.141
15     3 811.228 825.141
Run Code Online (Sandbox Code Playgroud)

或这个:

   level      start        end
1      1    3.60353 1112.62000
2      2    3.60353   20.35330
3      3    3.60353    8.77526 …
Run Code Online (Sandbox Code Playgroud)

r

9
推荐指数
1
解决办法
181
查看次数

复制数据帧的观察,但也替换R中的特定变量值

我正在寻找一些关于数据重组的建议.我正在使用Google Forms收集一些数据,我将其作为csv文件下载,如下所示:

# alpha                 beta    option
#  6             8, 9, 10, 11    apple
#  9                        6     pear
#  1                        6    apple
#  3                     8, 9     pear
#  3                     6, 8     lime
#  3                        1    apple
#  2, 4, 7, 11              9     lime
Run Code Online (Sandbox Code Playgroud)

数据有两个变量(alpha和beta),每个变量都列出数字.对于我的大多数数据,每个变量中只有一个数字.但是,对于某些观察,可以有两个,三个甚至十个数字.这是因为这些是使用谷歌表单中的"复选框"选项收集的回复,它允许对一个调查问题的多个答案.此外,对于一些潜在的解决方案来说,google表单在每个多个答案之前返回前导空格可能很重要.

在我的实际数据中,这只发生在所有观察的很小一部分中,上面是一个更简洁的例子.数据集中还有其他几个变量.在这里,我只包括一个包含因子的"选项".

我需要做的是在'alpha'或'beta'变量中复制包含多个数字的所有观察.重复行的数量应该等于alpha或beta变量中存在的数字的数量.然后,我需要将'alpha'或'beta'变量中的数字序列单独替换为每个数字.这将导致类似以下内容:

#  alpha  beta   option
#     6    8     apple
#     6    9     apple
#     6   10     apple
#     6   11     apple
#     9    6      pear
#     1    6     apple
#     3    8      pear
#     3    9 …
Run Code Online (Sandbox Code Playgroud)

r gsub reshape2 grepl

7
推荐指数
2
解决办法
277
查看次数

在dplyr或tidyr中执行类似于rbind的操作?

用以下数据说,我对每个水果有多少独特合作伙伴的问题感兴趣?

我的df:

       fruit1 fruit2
    1   guava   kiwi
    2   lemon   pear
    3    pear  apple
    4   guava   kiwi
    5    pear  guava
    6   apple   kiwi
    7  banana  lemon
    8   lemon   kiwi
    9   apple banana
    10  lemon  guava
Run Code Online (Sandbox Code Playgroud)

我正试图掌握dplyr和tidyr.为此,我认为使用n_distinct()in dplyr 会很好.我做了以下事情:

rbind (df %>%select(fruita=fruit1,fruitb=fruit2), 
       df %>%select(fruita=fruit2,fruitb=fruit1)) %>%
  group_by(fruita) %>%
  summarise(Partners=n_distinct(fruitb)) %>%
  arrange(desc(Partners))
Run Code Online (Sandbox Code Playgroud)

这基本上复制了下面的10行,但是在下半部分切换了水果的顺序.然后我计算新的第一列中的每个水果,它在新的第二列中使用了多少独特的伴侣水果n_distinct().

这工作得很好,但考虑到如何优雅dplyrtidyr有,我想知道是否有这样做的更有效的方法,尤其是如果有执行的方式rbind,如使用此这些包的一个?

最终数据如下所示:

  fruita Partners
1  lemon        4
2  apple        3
3  guava        3
4   pear        3
5   kiwi        3
6 banana …
Run Code Online (Sandbox Code Playgroud)

r rbind dplyr tidyr

7
推荐指数
1
解决办法
2889
查看次数

从strsplit-R之后的嵌套列表中提取第n个元素

我一直在努力了解如何strsplit更好地处理输出.我经常有这样的数据,我想分开:

mydata <- c("144/4/5", "154/2", "146/3/5", "142", "143/4", "DNB", "90")

#[1] "144/4/5" "154/2"   "146/3/5" "142"     "143/4"   "DNB"     "90"     
Run Code Online (Sandbox Code Playgroud)

拆分后,结果如下:

strsplit(mydata, "/")

#[[1]]
#[1] "144" "4"   "5"  

#[[2]]
#[1] "154" "2"  

#[[3]]
#[1] "146" "3"   "5"  

#[[4]]
#[1] "142"

#[[5]]
#[1] "143" "4"  

#[[6]]
#[1] "DNB"

#[[7]]
#[1] "90"
Run Code Online (Sandbox Code Playgroud)

我从strsplit帮助指南中知道最终的空字符串不会产生.因此,根据要拆分的"/"数,我的每个结果中都会有1,2或3个元素

获得第一个元素非常简单:

sapply(strsplit(mydata, "/"), "[[", 1)

#[1] "144" "154" "146" "142" "143" "DNB" "90" 
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何获得第2,第3 ......当每个结果中存在这些不等数量的元素时.

sapply(strsplit(mydata, "/"), "[[", 2)

# Error in FUN(X[[4L]], ...) : subscript out of bounds …
Run Code Online (Sandbox Code Playgroud)

r strsplit sapply

7
推荐指数
1
解决办法
5250
查看次数

控制ggvis中r因子组的颜色

我有一个关于控制ggvis中数据点的颜色的问题.

我有一个数据框,我正在以多种方式过滤(在一个闪亮的应用程序内,如果它很重要).这导致通常不通过存在于得到的滤波数据帧中来观察组I着色数据点.这显然导致出现在不同图中的不同颜色,这是令人困惑的.

这是一个非常接近的例子:

set.seed(101)
dfvis <- data.frame(x = runif(20), y = runif(20), mygroup = LETTERS[1:5])
dfvis


dfvis %>% 
  ggvis(x= ~x, y= ~y)  %>% 
  layer_points(fill = ~factor(mygroup))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

让我们过滤一组 -

  dfvis <- dfvis %>% filter(mygroup!="A")

    dfvis %>% 
      ggvis(x= ~x, y= ~y)  %>% 
      layer_points(fill = ~factor(mygroup))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这里,"B"现在是蓝色,所有其他组在颜色顺序方面向上移动一个.

有没有办法,当在同一个df上做多个过滤器时,总是为每个因子/组的级别确保相同的颜色?

之前在ggplot中工作的一个技巧是在每个因子级别的数据帧末尾添加一个NA观测值.乍一看,这可以正常工作,因为颜色按照正确的顺序返回,但请注意左上角的流氓数据点!

dfvis1 <- rbind(dfvis, data.frame(x=NA, y=NA, mygroup="A"))

dfvis1 %>% 
  ggvis(x= ~x, y= ~y)  %>% 
  layer_points(fill = ~factor(mygroup))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所有帮助赞赏.

r ggvis

7
推荐指数
1
解决办法
2068
查看次数

印刷线使用sprintf打破 - 有光泽

我打算在打印时进行换行.

这是我的代码:

temp <- LETTERS[1:11]

print(sprintf("Rank %s = %s \n", 1:11, temp))
Run Code Online (Sandbox Code Playgroud)

输出:

[1] "Rank 1 = A \n"  "Rank 2 = B \n"  "Rank 3 = C \n"  "Rank 4 = D \n"  "Rank 5 = E \n"  "Rank 6 = F \n"  "Rank 7 = G \n"  "Rank 8 = H \n"  "Rank 9 = I \n" 
[10] "Rank 10 = J \n" "Rank 11 = K \n"
Run Code Online (Sandbox Code Playgroud)

我天真地认为这\n是一个突破.我想要的输出是:

"Rank 1 = A"  
"Rank 2 = …
Run Code Online (Sandbox Code Playgroud)

r

7
推荐指数
1
解决办法
3802
查看次数

找到与目标相加的所有数字组合

我希望找到最快的方法来找到1000个'n'整数的可能组合来找到目标整数.

例如.说我想要数字'20'.我想找到最多1000个四个整数的组合,它们总和到这个数字.整数可以重复.我还有一个条件,即整数不能小于特定的数字,在这种情况下为4.

target<-20  #the number I wish to sum to
lowest<-4   #the smallest integer I allow
size<-4 #the number of integers I wish to use to sum
maxposs <- target - ((size-1) * lowest) #given the lowest, this is the max possible integer. In my example it is 8.
Run Code Online (Sandbox Code Playgroud)

这就是我开始解决这个问题的方法.利用combn找到的四个选择整数的所有组合,然后由那些和为我的目标过滤.

m <- combn(rep(lowest:maxposs,size), size)
m1<- m[,colSums(m)==target]
Run Code Online (Sandbox Code Playgroud)

这里,'m1'有245列.只有这么多解决方案.最后几列:

#     [,238] [,239] [,240] [,241] [,242] [,243] [,244] [,245]
#[1,]      4      4      4      4      4      4      5      5
#[2,]      5      5 …
Run Code Online (Sandbox Code Playgroud)

r

6
推荐指数
1
解决办法
2299
查看次数

按组查找时间间隔中的重叠并返回子集数据帧

假设我有这个数据框,它有两个 ID (1/2),它们的开始和结束时间在三个不同的区域 (A/B/C):

df <- structure(list(id = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2), zone = c("A", 
"B", "A", "C", "B", "A", "B", "A", "B", "C"), start = c(0, 6, 
7, 8, 10, 0, 3, 5, 6, 7), end = c(6, 7, 8, 10, 11, 3, 5, 6, 7, 
11)), row.names = c(NA, -10L), class = "data.frame")

df

   id zone start end
1   1    A     0   6
2   1    B     6   7
3   1    A     7 …
Run Code Online (Sandbox Code Playgroud)

r dataframe data.table

6
推荐指数
1
解决办法
139
查看次数

按日期和时间对数据帧进行排序和排序

我有一个数据框如下.最初只有两列/变量 - "Timestamp"(包含日期和时间)和"Actor".我将"时间戳"变量分解为"日期"和"时间",然后将"时间进一步分解为"小时"和"分钟".然后给出以下结构

dataf<-structure(list(hours = structure(c(3L, 4L, 4L, 3L, 3L, 3L, 6L, 
6L, 6L, 6L, 6L, 2L, 2L, 2L, 2L, 5L, 5L, 5L, 1L, 1L, 2L, 2L), .Label = c("9", 
"12", "14", "15", "16", "17"), class = "factor"), mins = structure(c(17L, 
1L, 2L, 14L, 15L, 16L, 3L, 4L, 6L, 6L, 7L, 9L, 9L, 13L, 13L, 
10L, 11L, 12L, 2L, 5L, 8L, 8L), .Label = c("00", "04", "08", 
"09", "10", "12", "13", "18", "19", "20", "21", "22", "27", "39", 
"51", "52", …
Run Code Online (Sandbox Code Playgroud)

time r date rank

5
推荐指数
1
解决办法
3916
查看次数

同样在向量中排名NA [r]

我想知道我是否遗漏了一些微不足道的东西:

在对包含NA的此类矢量进行排名时,有四种选择如何处理NA:

x<-c(5, NA, 3, NA, 6, 9, 10, NA, 5, 7, 12)

rank(x, na.last=T)   
# [1]  2.5  9.0  1.0 10.0  4.0  6.0  7.0 11.0  2.5  5.0  8.0

rank(x, na.last=F)
# [1]  5.5  1.0  4.0  2.0  7.0  9.0 10.0  3.0  5.5  8.0 11.0

rank(x, na.last=NA)
# [1] 2.5 1.0 4.0 6.0 7.0 2.5 5.0 8.0

rank(x, na.last="keep")
#  [1] 2.5  NA 1.0  NA 4.0 6.0 7.0  NA 2.5 5.0 8.0
Run Code Online (Sandbox Code Playgroud)

我希望保持和排名NAs.为了我的目的,他们应该平等和最后排名.在这种情况下ties.method,要使用的是默认的"平均值".我正在寻找这个结果:

#  [1] 2.5  10.0 1.0  10.0 4.0 …
Run Code Online (Sandbox Code Playgroud)

r na

5
推荐指数
1
解决办法
250
查看次数

标签 统计

r ×10

data.table ×1

dataframe ×1

date ×1

dplyr ×1

ggvis ×1

grepl ×1

gsub ×1

na ×1

rank ×1

rbind ×1

reshape2 ×1

sapply ×1

strsplit ×1

tidyr ×1

time ×1