小编ℕʘʘ*_*ḆḽḘ的帖子

如何将 tibble 转换为稀疏矩阵

考虑这个简单的小标题

\n\n
> data_frame(col1 = c(1,2,3), col2 = c(3,2,NA))\n# A tibble: 3 x 2\n   col1  col2\n  <dbl> <dbl>\n1     1     3\n2     2     2\n3     3    NA\n
Run Code Online (Sandbox Code Playgroud)\n\n

将其转换为稀疏矩阵的最有效方法是什么?\n我尝试了类似的方法

\n\n
> data_frame(col1 = c(1,2,3), col2 = c(3,2,NA)) %>% \n+   as(., \'sparseMatrix\')\nError in as(from, "CsparseMatrix") : \n  no method or default for coercing \xe2\x80\x9ctbl_df\xe2\x80\x9d to \xe2\x80\x9cCsparseMatrix\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n\n

没有成功。按照建议尝试:

\n\n
y <- purrr::reduce(cbind2, map(df, \'Matrix\', sparse = TRUE))\n
Run Code Online (Sandbox Code Playgroud)\n\n

也不行。

\n\n

使用 tidyverse 有什么好主意吗?\n谢谢!

\n

r sparse-matrix dplyr purrr

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

如何解析R中的python列表?

考虑这个简单的例子

tibble(mylist = c("['this is some text from Python!', 'and this is another one!']",
                  "['this is also some cool stuff', 'and this is awesome!']"))
# A tibble: 2 x 1
 mylist                                                        
  <chr>                                                         
1 ['this is some text from Python!', 'and this is another one!']
2 ['this is also some cool stuff', 'and this is awesome!']      
Run Code Online (Sandbox Code Playgroud)

我想解析类似 python 的列表,以便 dplyr 理解这是一个句子列表(字符变量)。也就是说,像

> tibble(mylist = list(list('this is some text from Python!', 'and this is another one!'),
+                      list('this is also some cool …
Run Code Online (Sandbox Code Playgroud)

r dplyr tibble

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

当存在联系时,sorted() 的排序

考虑这个简单的例子

x = [1,2,3,4]
y = [1,2,2,4]
Run Code Online (Sandbox Code Playgroud)

下面的代码返回一个元组,其中包含 x 和 y 中的元素,并按 y 列表中的数字降序排序。

sorted(zip(x,y), key = lambda x: x[1], reverse = True)
Out[10]: [(4, 4), (2, 2), (3, 2), (1, 1)]
Run Code Online (Sandbox Code Playgroud)

我的问题是:您可以看到元组(2,2)(3,2)本质上是绑定的(相同的 y 值 = 2),但必须选择哪个元组在排序列表中排在第一位。

默认规则是什么?Python 默认情况下会保持元素的原始顺序吗?

谢谢!

python

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

如何在保留原始数据帧的同时获取组级统计信息?

我有以下数据帧

one <- c('one',NA,NA,NA,NA,'two',NA,NA)
group1 <- c('A','A','A','A','B','B','B','B')
group2 <- c('C','C','C','D','E','E','F','F')

df = data.frame(one, group1,group2)


> df
   one group1 group2
1  one      A      C
2 <NA>      A      C
3 <NA>      A      C
4 <NA>      A      D
5 <NA>      B      E
6  two      B      E
7 <NA>      B      F
8 <NA>      B      F
Run Code Online (Sandbox Code Playgroud)

我想获得的非缺失观测值的计数one的每个组合group1group2.

在Pandas,我会用groupby(['group1','group2']).transform,但我怎么能在R?原始数据帧很大.

预期产出是:

> df
   one group1 group2 count
1  one      A      C     1
2 <NA>      A      C     1
3 <NA> …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table tidyr

0
推荐指数
2
解决办法
77
查看次数

dplyr:如何(简明地)对不同的情况使用mutate条件?

请考虑以下示例

data <- data_frame(name = c('A','B','C','C',NA,'D'))

> data
# A tibble: 6 × 1
   name
  <chr>
1     A
2     B
3     C
4     C
5  <NA>
6     D
Run Code Online (Sandbox Code Playgroud)

在这里,我知道变量name实际映射到'A' -> 'one''B' -> 'two'.我只想创建一个获取映射值的变量.当然,在我的原始数据集中,我还有更多要映射的案例.

不起作用的东西如下.

data <- data %>%
  mutate(mapping = ifelse(name == 'A', 'one', name),
         mapping = ifelse(name == 'B', 'two', name))
> data
# A tibble: 6 × 2
   name mapping
  <chr>   <chr>
1     A       A
2     B     two
3     C       C …
Run Code Online (Sandbox Code Playgroud)

r dplyr

0
推荐指数
1
解决办法
1166
查看次数

熊猫:功能中的本地与全局数据帧

我不明白这里的最佳做法是什么:

我想data在我的函数中修改数据帧.data是全球定义的.但是,如果我global在函数中指定选项,我必然会得到一个错误,因为data =定义了一个局部变量.

data = pd.DataFrame({'A' : [1, 2, 3, 4],
                     'B' : [1, 2, 3, 4]})

def test(data):
    global data
    data =  data + 1
    return data

test(data) 
SyntaxError: name 'data' is local and global
Run Code Online (Sandbox Code Playgroud)

这是否意味着我global在使用数据帧时无法使用该参数?

def test2(data):
    data =  data + 1
    return data
Run Code Online (Sandbox Code Playgroud)

也不起作用.那是原来data没有修改过的.

我在这里错过了什么?

python function

0
推荐指数
1
解决办法
5100
查看次数

如何使用可能与lm?

考虑这个简单的例子

library(dplyr)
library(broom)

dataframe <- data_frame(id = c(1,2,3,4,5,6),
                        value = c(NA,NA,NA,NA,NA,NA))
dataframe

> dataframe
# A tibble: 6 x 2
     id value
  <dbl> <lgl>
1     1    NA
2     2    NA
3     3    NA
4     4    NA
5     5    NA
6     6    NA
Run Code Online (Sandbox Code Playgroud)

我有一个函数,主要用于lm计算我的数据帧中列的平均值.

get_mean <- function(data, myvar){
  col_name <- as.character(substitute(myvar))
  fmla <- as.formula(paste(col_name, "~ 1"))
  tidy(lm(data = data, fmla, na.action = 'na.omit')) %>% pull(estimate)
}
Run Code Online (Sandbox Code Playgroud)

现在

> get_mean(dataframe, id)
[1] 3.5
Run Code Online (Sandbox Code Playgroud)

但由于缺少价值,

get_mean(dataframe, value)
Run Code Online (Sandbox Code Playgroud)

回归可怕的

Error in lm.fit(x, …
Run Code Online (Sandbox Code Playgroud)

r dplyr purrr

0
推荐指数
1
解决办法
568
查看次数

如何将纳秒转换为字符?

考虑这个简单的例子

DT <- data.table::data.table(mytime =  c(nanotime('2011-12-05 08:30:00.000',format ="%Y-%m-%d %H:%M:%E9S",  tz ="GMT"),
                         nanotime('2011-12-05 08:30:00.100',format ="%Y-%m-%d %H:%M:%E9S",  tz ="GMT"),
                         nanotime('2011-12-05 08:30:00.825',format ="%Y-%m-%d %H:%M:%E9S",  tz ="GMT")))
#convert the timestamp to string
DT[, mytime_character := strftime(mytime, format = '%Y-%m-%d %H:%M:%OS3')]

> DT
                                mytime        mytime_character
1: 2011-12-05T08:30:00.000000000+00:00 2011-12-05 03:30:00.000
2: 2011-12-05T08:30:00.100000000+00:00 2011-12-05 03:30:00.099
3: 2011-12-05T08:30:00.825000000+00:00 2011-12-05 03:30:00.825
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,转换nanotime时间戳character(使用strftime)创建第二时间戳的错误毫秒部分:.099代替.100

不幸的是,我需要将时间戳转换为字符串,以便其他编程语言可以吸收它们。

有没有一种方法可以将时间戳正确转换为字符而不会造成精度损失?

谢谢!

r nanotime data.table

0
推荐指数
1
解决办法
56
查看次数

how to clean a query string in a URL?

Consider this simple example

www.stackunderflow.com?q=snack%20over%20flow

I am interested in parsing the query string of the url. However, as you can see, I have these annoying URL encoding strings (such as %20) that I need convert.

How can I do that in R? I would like to obtain a clean string such as snack over flow. I know how to get the query part :

> str_match('www.stackunderflow.com?q=snack%20over%20flow', regex('\\?q=(.*)'))[,2]
[1] "snack%20over%20flow"
Run Code Online (Sandbox Code Playgroud)

but I dont know how to clean the string. …

regex url r stringr

0
推荐指数
1
解决办法
80
查看次数

标签 统计

r ×7

dplyr ×5

data.table ×2

purrr ×2

python ×2

function ×1

nanotime ×1

regex ×1

sparse-matrix ×1

stringr ×1

tibble ×1

tidyr ×1

url ×1