小编use*_*882的帖子

将列名传递给R tidyr spread

我试图将具有列名称的对象传递给spread函数,但是它不是读取对象内部的值而只是尝试使用对象名称本身

这里只是一个玩具示例

library(tidyr)
d = (1:4)
n = c("a"," a", "b","b") 
s = c(1, 2,5,7) 

df = data.frame(d,n, s) 

Value <- n
data_wide <- spread(df, Value , s)
Run Code Online (Sandbox Code Playgroud)

错误:输入中不存在键列"值".

虽然下面工作正常:

data_wide <- spread(df, n, s)
d  a  a  b
1 1 NA  1 NA
2 2  2 NA NA
3 3 NA NA  5
4 4 NA NA  7
Run Code Online (Sandbox Code Playgroud)

r tidy spread

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

根据 2 列的范围将新行插入到 Pandas 数据框中

我有一个 df 像:

ID       value1   start     end
 1         100     1        2       
 1         200     2        4
 2         50      1        1
 2         30      3        5 
Run Code Online (Sandbox Code Playgroud)

我想为开始和结束之间的每个值填充新行

最终的 df 应如下所示,其中 period 是开始和结束之间的每个唯一值

    ID       value1      period     
     1         100     1        
     1         100     2            
     1         200     2 
     1         200     3 
     1         200     4       
     2         50      1        
     2         30      3    
     2         30      4 
     2         30      5     
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

Subplot Plotly 中的多个动画

尝试仅使用一个播放按钮在 R 中使用 Plotly 为多个绘图设置动画

为了获得我使用的每个数据条目的帧值:

    accumulate_by <- function(dat, var) {
  var <- lazyeval::f_eval(var, dat)
  lvls <- plotly:::getLevels(var)
  dats <- lapply(seq_along(lvls), function(x) {
    cbind(dat[var %in% lvls[seq(1, x)], ], frame = lvls[[x]])
  })
  dplyr::bind_rows(dats)
}



    d <- df3 %>% select(gen,score) %>% 
      accumulate_by(~gen)
    d2 <- df3 %>% select(gen,cpg_margin) %>% 
      accumulate_by(~gen)
Run Code Online (Sandbox Code Playgroud)

接下来我创建情节

p1 <- d %>%
  plot_ly(
    x = ~gen, 
    y = ~score,
    frame = ~frame, 
    type = 'scatter',
    mode = 'lines', 
    line = list(simplyfy = F)
  ) %>% 
  layout(
    xaxis = list( …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 plotly

5
推荐指数
0
解决办法
635
查看次数

如果值等于X,则保留行名和列名

以下数据集

  a b c d e 
X 1 1 1 1 0
Z 1 0 0 1 0
Y 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

我想创建列表.当列中至少有一个值等于1时,一个具有所有列名称.一个列表包含所有行名称(X,Z,Y),每当至少一个行元素的值为1时.

我试过了:

df[Reduce(`|`, as.data.frame(lapply(df)), function(x) x %in% 1),]
Run Code Online (Sandbox Code Playgroud)

没有结果.

最后我想要

x=(a,b,c,d) and z=(X,Z)
Run Code Online (Sandbox Code Playgroud)

r

2
推荐指数
1
解决办法
1262
查看次数

标签 统计

r ×3

dataframe ×1

ggplot2 ×1

pandas ×1

plotly ×1

python ×1

spread ×1

tidy ×1