在tidyverse包中使用选择功能时,我开始收到警告。
例子:
library(dplyr)
set.seed(123)
df = data.frame(
"id" = c(rep("G1", 3), rep("G2", 4), rep("G3", 3)),
"total" = sample.int(n = 10),
"C1" = sample.int(n=10),
"C2" = sample.int(n=10),
"C3" = sample.int(n=10))
cols.to.sum = c("C1", "C2")
df.selected = df %>%
dplyr::select(total, cols.to.sum)
Run Code Online (Sandbox Code Playgroud)
给予:
Note: Using an external vector in selections is ambiguous.
i Use `all_of(cols.to.sum)` instead of `cols.to.sum` to silence this message.
i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
This message is displayed once per session.
Run Code Online (Sandbox Code Playgroud)
如果我重构为:
df.selected = df %>%
dplyr::select(total, all_of(cols.to.sum))
Run Code Online (Sandbox Code Playgroud)
此行为已从 更改 …
我试图融化这个数据集:
raw1 <- c("Alpha", "2018-04-01", "566.0", "647.75", "669.08", "673.08", "675.00")
raw2 <- c("Alpha", "2018-04-02", "563.3", "651.08", "670.67", "684.58", "671.17")
mydf <- as.data.frame(rbind(raw1, raw2))
names(mydf) <- c("name", "date", "h1", "h2", "h3", "h4", "h5")
mydf
name date h1 h2 h3 h4 h5
Alpha 2018-04-01 566.0 647.75 669.08 673.08 675.00
Alpha 2018-04-02 563.3 651.08 670.67 684.58 671.17
Run Code Online (Sandbox Code Playgroud)
通过使用:
mynewdf <- melt(mydf, id.vars = c("name","date"), variable.name = "hour", value.name = "desiredName", measure.vars = names(mydf[,3:7]))
mynewdf
Run Code Online (Sandbox Code Playgroud)
我得到:
name date hour desiredName
1 Alpha 2018-04-01 h1 …Run Code Online (Sandbox Code Playgroud) 我将客户数据存储在R中的嵌套列表中,其方式与此相同:
myinventedlist <- list("LOLETE" = list("Name" = "LOLETE",
"location" = "Huelva",
"Employees" = "22",
"SM" = "eJeK1",
"Groups" = list("ABUELOs" = list("PICHI" = list("fab_name" = "Pichi (ES)", "fab_id" = "2323423ES", "fab_tarif" = "6A"),
"PACHA" = list("fab_name" = "Pacha (AG)", "fab_id" = "1231212AG", "fab_tarif" = "6A"),
"POCHO" = list("fab_name" = "Pocho (ED)", "fab_id" = "2132192ED", "fab_tarif" = "6A")),
"PRIMOts" = list("MONGO" = list("fab_name" = "MONGO (LB)", "fab_id" = "21332238LB", "fab_tarif" = "6A"),
"MINGO" = list("fab_name" = "MINGO (NT)", "fab_id" = "22231220NT", …Run Code Online (Sandbox Code Playgroud) 我想last_value()在查询中使用 或任何类似的函数group by而不是作为窗口函数。有可能吗?
CREATE TABLE test
(Group_id INT, Fecha DATE, Sales INT)
;
INSERT INTO test (Group_id,Fecha,Sales)
VALUES ( 1, '2021-10-15', 100 ),
( 1, '2021-11-15', 90 ),
( 1, '2022-01-15', 95 ),
( 2, '2021-10-15', 50 ),
( 2, '2021-11-15', 60 ),
( 2, '2022-01-15', 70 )
;
Run Code Online (Sandbox Code Playgroud)
目前的解决方案:
select
distinct
group_id,
last_value(sales) over (partition by group_id order by fecha) as last_sales,
max(sales) over (partition by group_id) as max_sales
from test
Run Code Online (Sandbox Code Playgroud)
所需的解决方案:
select
group_id,
max(sales) …Run Code Online (Sandbox Code Playgroud) 对于每个值,myvector1我想知道mycategory前一个相同值的值myvector1,如果mystatus是ON,否则我会查找相应的下一个相同的值,直到它为ON.
说明看起来像这样:
给定数据集mydf我正在寻找的是DesiredSolution(我手动填写).
mydf <- structure(list(myvector1 = structure(c(1L, 2L, 3L, 4L, 5L, 1L,
2L, 4L, 5L, 2L, 3L, 4L, 5L, 2L, 3L, 5L, 1L, 2L, 3L, 4L, 5L, 1L,
2L, 4L, 5L, 1L, 1L, 2L, 3L, 4L, 5L, 3L), .Label = c("0", "1",
"2", "3", "4"), class = "factor"), mystatus = structure(c(2L,
1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, …Run Code Online (Sandbox Code Playgroud) 我是 SOAP 请求和一般编程的新手。我想访问需要持有者令牌授权才能使用其服务之一的 WSDL。
调用后我想访问的服务的信息 pyhton -mzeep *WSDL_url*:
getInfo(param1: xsd:string, param2: xsd:anySimpleType, param3: xsd:anySimpleType) -> out: ns0:ResponseCurve[]
Run Code Online (Sandbox Code Playgroud)
首先,我收到令牌:
import zeep
user = 'my_user'
userpass = 'my_pass'
token = client.service.getAuthToken(user,userpass)
Run Code Online (Sandbox Code Playgroud)
然后我想请求需要三个参数的服务 getInfo:
my_info = client.service.getInfo('param1', 'param2', 'param3')
Run Code Online (Sandbox Code Playgroud)
我从提供商那里知道,每次我想访问此服务时都需要令牌,并且在文档中,关于身份验证的标头说明了以下内容:
授权:承载 eyJhbGciOiJIUzI1N[...]
我试图将标题作为 dict 传入 _soapheaders但没有工作。
我可以使用强制请求访问服务:
def get_response_from_provider(token, param1, param2, param3):
url = "WSDL url"
headers = {'Authorization': 'Bearer ' + token,
'content-type': 'text/xml'}
body = """
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsl="uri">
<soapenv:Header/>
<soapenv:Body>
<wsl:getInfo>
<param1>""" + param1 + """</param1>
<param2>""" + …Run Code Online (Sandbox Code Playgroud) 我有许多对象想在 R 中绘制并将它们保存到我的目录中。要分配每个图形的名称,我需要能够获取要绘制的对象的名称(作为字符串?)。
一个例子是:
setwd("C:/.../mydirectory/")
myname <- myobjectname(myobject) **I want to obtain the string of "myobject"**
png(paste(myname, ".png", sep=""))
myGraphingFunction(myobject)
dev.off()
Run Code Online (Sandbox Code Playgroud)
我已经尝试过:
myobjectname <- function(v1){
deparse(substitute(v1))
}
Run Code Online (Sandbox Code Playgroud)
它执行我想做的事情并返回我想要的字符串。然而,当在循环中或在上图情况下使用它时,它不起作用。
我有一个带有参数“month”的函数,它将被“一月”或“二月”等替换。EG 使用该函数时:
myobjectname <- function(month)
Run Code Online (Sandbox Code Playgroud)
在循环中,虽然变量月份现在是一月(或其他),但我得到的字符串始终是“month”。
总结:
> deparse(substitute(january))
[1] "january"
> month <- january
> deparse(substitute(month))
[1] "month"
Run Code Online (Sandbox Code Playgroud)
关于第二个案例如何返回“一月”有什么提示吗?
谢谢
目标:将数据帧列表中数据帧的 colname 更改为每个数据帧的名称。
在处理与其名称有关的列表和数据框时,我遇到一些问题。我准备了这个例子来澄清。希望这不是一团糟。
df1 <- data.frame(A = 1, B = 2, C = 3)
df2 <- data.frame(A = 3, B = 3, C = 2)
dfList <- list(df1,df2)
Run Code Online (Sandbox Code Playgroud)
输出:
> str(dfList)
List of 2
$ :'data.frame': 1 obs. of 3 variables:
..$ A: num 1
..$ B: num 2
..$ C: num 3
$ :'data.frame': 1 obs. of 3 variables:
..$ A: num 3
..$ B: num 3
..$ C: num 2
> names(dfList)
NULL
> names(dfList$df1)
NULL …Run Code Online (Sandbox Code Playgroud)