考虑这个简单的小标题
\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\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n\n没有成功。按照建议尝试:
\n\ny <- purrr::reduce(cbind2, map(df, \'Matrix\', sparse = TRUE))\nRun Code Online (Sandbox Code Playgroud)\n\n也不行。
\n\n使用 tidyverse 有什么好主意吗?\n谢谢!
\n考虑这个简单的例子
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) 考虑这个简单的例子
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 默认情况下会保持元素的原始顺序吗?
谢谢!
我有以下数据帧
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的每个组合group1和group2.
在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) 请考虑以下示例
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) 我不明白这里的最佳做法是什么:
我想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没有修改过的.
我在这里错过了什么?
考虑这个简单的例子
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) 考虑这个简单的例子
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
不幸的是,我需要将时间戳转换为字符串,以便其他编程语言可以吸收它们。
有没有一种方法可以将时间戳正确转换为字符而不会造成精度损失?
谢谢!
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. …