标签: tibble

如何用一组值替换 NA

我有以下数据框:

library(dplyr)
library(tibble)


df <- tibble(
  source = c("a", "b", "c", "d", "e"),
  score = c(10, 5, NA, 3, NA ) ) 


df
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

# A tibble: 5 x 2
  source score
  <chr>  <dbl>
1 a         10 . # current max value
2 b          5
3 c         NA
4 d          3
5 e         NA
Run Code Online (Sandbox Code Playgroud)

我想要做的是NA用现有的值范围替换分数列max + n。其中n范围从 1 到总行数df

导致这个(手工编码):

  source score
  a         10
  b          5
  c         11 # obtained from 10 + …
Run Code Online (Sandbox Code Playgroud)

replace if-statement r dplyr tibble

17
推荐指数
3
解决办法
675
查看次数

将列表列直接分成几列

我可以直接在n列中删除列表列吗?

可以假定该列表是规则的,所有元素的长度相等.

如果不是列表列,我会有一个字符向量,我可以tidyr::separate.我可以tidyr::unnest,但我们需要另一个辅助变量才能tidyr::spread.我错过了一个明显的方法吗?

示例数据:

library(tibble)

df1 <- data_frame(
  gr = c('a', 'b', 'c'),
  values = list(1:2, 3:4, 5:6)
)
Run Code Online (Sandbox Code Playgroud)
# A tibble: 3 x 2
  gr    values   
  <chr> <list>   
1 a     <int [2]>
2 b     <int [2]>
3 c     <int [2]>
Run Code Online (Sandbox Code Playgroud)

目标:

df2 <- data_frame(
  gr = c('a', 'b', 'c'),
  V1 = c(1, 3, 5),
  V2 = c(2, 4, 6)
)
Run Code Online (Sandbox Code Playgroud)
# A tibble: 3 x 3
  gr       V1    V2
  <chr> <dbl> …
Run Code Online (Sandbox Code Playgroud)

r tidyr tibble

16
推荐指数
4
解决办法
3317
查看次数

data.frame、tibble和matrix之间有什么区别?

在 R 中,某些函数仅适用于 a data.frame,而其他函数仅适用于 atibble或 a matrix

使用as.data.frame或转换我的数据as.matrix通常可以解决这个问题,但我想知道这三者有何不同?

r matrix dataframe tibble

15
推荐指数
1
解决办法
1万
查看次数

as.tibble(),as_data_frame()和tbl_df()之间有什么区别?

我记得读书的地方,as.tibble()是一个别名as_data_frame(),但我不知道到底是什么的别名是在编程术语.它与包装器类似吗?

所以我想我的问题大概可以归结为在两者之间可能的用法区别tbl_df()as_data_frame():什么是它们之间的区别,如果有的话?

更具体地说,给定(非tibble)数据帧df,我经常使用以下方法将其转换为tibble:

df <- tbl_df(df)
Run Code Online (Sandbox Code Playgroud)

岂不

df <- as_data_frame(df)
Run Code Online (Sandbox Code Playgroud)

做同样的事?如果是这样,是否存在其他两种功能tbl_df()并且as_data_frame()不能互换使用以获得相同结果的情况?

R文件说,

tbl_df() 将论证转发给 as_data_frame()

这是否意味着它tbl_df()是一个包装或别名as_data_frame()?R文档似乎没有说什么as.tibble(),我忘记了我读到它的别名as_data_frame().此外,显然 as_tibble()是另一个别名as_data_frame().

如果这四个函数的功能完全相同,那么赋予一个函数四个不同名称的意义何在?这不是更有说服力而不是有用吗?

terminology r dplyr tidyverse tibble

14
推荐指数
1
解决办法
1万
查看次数

如何在Python和R之间交换Msgpack文件?

考虑这个简单的例子

import pandas as pd

mydata = pd.DataFrame({'mytime': [pd.to_datetime('2018-01-01 10:00:00.513'),
                                pd.to_datetime('2018-01-03 10:00:00.513')],
                      'myvariable': [1,2],
                      'mystring': ['hello', 'world']})
mydata
Out[7]: 
  mystring                  mytime  myvariable
0    hello 2018-01-01 10:00:00.513           1
1    world 2018-01-03 10:00:00.513           2
Run Code Online (Sandbox Code Playgroud)

我知道我可以msgpack使用Pandas以下方式写入该数据框:

mydata.to_msgpack('C://Users/john/Documents/mypack')
Run Code Online (Sandbox Code Playgroud)

问题是:如何读取该msgpack文件R

using RcppMsgPack返回一些令人困惑的输出,不是dataframe/tibble

library(tidyverse)
library(RcppMsgPack)

df <- msgpack_read('C://Users/john/Documents/mypack', simplify = TRUE)
 > df
$axes
$axes[[1]]
$axes[[1]]$typ
[1] "index"

$axes[[1]]$name
NULL

$axes[[1]]$klass
[1] "Index"

$axes[[1]]$compress
NULL

$axes[[1]]$data
[1] "mystring"   "mytime"     "myvariable"

$axes[[1]]$dtype
[1] "object"


$axes[[2]] …
Run Code Online (Sandbox Code Playgroud)

python r msgpack pandas tibble

13
推荐指数
1
解决办法
253
查看次数

禁用柱形格式化的tibble打印

从版本1.4.1开始,tibbleprint方法似乎正在使用pillar包实现的其他格式(https://rdrr.io/cran/tibble/f/NEWS.md).后者尝试输出尽可能多的列,缩短一些值.是否可以禁用此格式并返回之前存在的打印方法?在某些情况下,通过输出额外的列并缩短值,柱子使得难以读取第一列的内容,这通常是分析师的意图.

很难提供可重复的示例,因为输出和格式化将取决于您的特定显示的具体情况.我希望这个问题很简单:如何禁用tibble打印的支柱格式化(例如在控制台中).

编辑:在tibble github存储库上提出了同样的问题:https://github.com/tidyverse/tibble/issues/361#issuecomment-357233716.似乎目前无法禁用格式化.可以提供一些选项,包的开发版本(在撰写本文时)确实可以更好地进行格式化.但是,它仍然不完美,可能会截断重要信息(另请参阅github讨论涉及的问题).因此,禁用格式仍然是某些用户可能想要实现的.

r tibble

12
推荐指数
1
解决办法
520
查看次数

哪些 tidyverse 函数返回小标题?

有些tidyverse函数返回数据帧,但有些函数返回小标题。我找不到关于哪些函数返回哪种数据类型的任何资源,也看不到任何真正可预测的模式。以下是一些示例以供说明:

library(tidyverse)

# Returns dataframe
df1 <- iris %>% mutate(newcol = mean(Sepal.Length))
df2 <- iris %>% filter(Sepal.Length > 5)
df3 <- iris %>% select(Sepal.Length, Species)

class(df1); class(df2); class(df3)

[1] "data.frame"
[1] "data.frame"
[1] "data.frame"

# Returns tibble
df4 <- iris %>% add_count(Species)
df5 <- iris %>% pivot_longer(cols = -Species)
df6 <- iris %>% group_by(Species) %>% mutate(newcol = mean(Sepal.Length))

class(df4); class(df5); class(df6)

[1] "tbl_df"     "tbl"        "data.frame"
[1] "tbl_df"     "tbl"        "data.frame"
[1] "grouped_df" "tbl_df"     "tbl"        "data.frame"
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉函数的返回值类型是什么?或者,在 tidyverse 中有哪些函数返回哪种数据类型的资源?许多 R …

r tidyverse tibble

12
推荐指数
1
解决办法
354
查看次数

如何在R中的连续行中对滚动的cumsum进行滚动

我有一个玩具的例子.对由x组成的两个连续y行进行求和的最有效方法是什么


library(tibble)
l = list(x = c("a", "b", "a", "b", "a", "b"), y = c(1, 4, 3, 3, 7, 0))

df <- as_tibble(l)
df
#> # A tibble: 6 x 2
#>       x     y
#>   <chr> <dbl>
#> 1     a     1
#> 2     b     4
#> 3     a     3
#> 4     b     3
#> 5     a     7
#> 6     b     0
Run Code Online (Sandbox Code Playgroud)

所以输出就是这样的

   group   sum  seq
     a      4     1
     a     10     2
     b      7     1
     b      3     2
Run Code Online (Sandbox Code Playgroud)

我想使用RcppRoll包中的tidyverse和可能的roll_sum()并使用代码,以便可变长度的连续行可以用于真实世界数据,其中会有很多组

TIA

r tidyverse tibble

11
推荐指数
3
解决办法
902
查看次数

用列名和0行初始化一个空的小标题

我有一个名为的列名称向量tbl_colnames

我想用0行和length(tbl_colnames)列创建小标题。

我发现这样做的最好方法是...

tbl <- as_tibble(data.frame(matrix(nrow=0,ncol=length(tbl_colnames)))

然后我想命名这些列,以便...

colnames(tbl) <- tbl_colnames

我的问题:是否有更优雅的方法?

就像是 tbl <- tibble(colnames=tbl_colnames)

r tibble

11
推荐指数
6
解决办法
9939
查看次数

将 tibble 转换为带有列标题的数据框

我有一个像这样导入的 Excel 工作表中的数据:

F4_Off <- readxl::read_xlsx("myExcel.xlsx", sheet = "Offline", col_names = TRUE, range = "I1:L285")
F4_Off

F4_On <- readxl::read_xlsx("myExcel.xlsx", sheet = "Online", col_names = TRUE, range = "J1:M68")
F4_On
Run Code Online (Sandbox Code Playgroud)

这是结合使用:

F4_Gesamt <- rbind(F4_Off, F4_On)
Run Code Online (Sandbox Code Playgroud)

数据如下所示:

A tibble: 351 x 4
    nein Smartphone `Computer / Laptop / Tablet` `keine Angabe`
   <dbl>      <dbl>                        <dbl>          <dbl>
 1   NA         NA                            1.             NA
 2   NA          1.                          NA              NA
 3   NA          1.                          NA              NA
 4   NA          1.                          NA              NA
 5   NA          1.                           1.             NA
 6   NA …
Run Code Online (Sandbox Code Playgroud)

r dataframe tibble

11
推荐指数
1
解决办法
4万
查看次数

标签 统计

r ×10

tibble ×10

tidyverse ×3

dataframe ×2

dplyr ×2

if-statement ×1

matrix ×1

msgpack ×1

pandas ×1

python ×1

replace ×1

terminology ×1

tidyr ×1