我的数据结构如下(这些只是示例数据,因为原始数据是秘密的)
id | crime | location | crimedate
------------------------------
1 | Theft | public | 2019-01-04
1 | Theft | public | 2019-02-06
1 | Theft | public | 2019-02-20
1 | Theft | private | 2019-03-10
1 | Theft | private | 2019-03-21
1 | Theft | public | 2019-03-01
1 | Theft | private | 2019-03-14
1 | Theft | public | 2019-06-15
1 | Murder | private | 2019-01-04
1 | Murder | private | 2019-10-20
1 …
Run Code Online (Sandbox Code Playgroud) 首先,让我们创建一些假数据:
d <- c("2019-01-01", "2019-01-02", "2019-01-03", "2019-01-04", "2019-01-03", "2019-04-06", "2019-04-03", "2019-05-07", "2019-05-03", "2019-05-03", "2019-05-03", "2019-05-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-07-03", "2019-07-03", "2019-07-04", "2019-08-03", "2019-09-05", "2019-09-03", "2019-09-03", "2019-09-06", "2019-09-08", "2019-10-03", "2019-11-03", "2019-11-03", "2019-11-03", "2019-11-03", "2019-11-03", "2019-11-03", "2019-12-03", "2019-12-03")
df <- data.frame(dates=as.Date(d))
Run Code Online (Sandbox Code Playgroud)
现在,我创建一个时间序列图:
# aggregate data
df_plot <- df %>% mutate(month = lubridate::floor_date(dates, "month")) %>%
group_by(month) %>% summarise(count = n())
# plot data
ggplot(aes(x = month, y = count), data = df_plot) + geom_line() +
scale_x_date() +
geom_vline(xintercept = …
Run Code Online (Sandbox Code Playgroud) 我想根据某些变量是否以某个字符串序列开头来更改它们的值。
例子:
df <- data.frame(var1 = c("12345", "12345", "12345", "23456", "23456"))
df %>% mutate(var2 = ifelse(starts_with("123"), "ok", "not ok"))
Run Code Online (Sandbox Code Playgroud)
所有以“123”开头的值都应更改为“ok”。我怎样才能starts_with()
与结合mutate()
?
谢谢!
我有以下数据框,由在两个不同时间(t1 和 t2)测量的不同变量(A、X、L)组成。当然,在真实的数据中还有更多的变量(只是为了举例)
\nn <- 100\n\ndf <- data.frame(A_t1 = runif(n, min = 1, max = 5),\n A_t2 = runif(n, min = 1, max = 5),\n X_t1 = runif(n, min = 1, max = 5),\n X_t2 = runif(n, min = 1, max = 5),\n L_t1 = runif(n, min = 1, max = 5),\n L_t2 = runif(n, min = 1, max = 5)\n) %>% pivot_longer(cols = starts_with(c("A", "X", "L")))\n\n> df\n# A tibble: 600 \xc3\x97 2\n name value\n <chr> <dbl>\n 1 A_t1 …
Run Code Online (Sandbox Code Playgroud) 如果我出于某种原因将日期10.10.61
(DD.MM.YY)as.Date(date, format="%d.%m.%y")
转换为2061 -10-10。
有没有一种优雅的方法来纠正这个问题,还是我必须通过切割字符串并在前面添加“19”来手动完成?
我也试过zoo包,它带来了相同(错误)的结果。
我想导出一个由PROC TABULATE
. 我的代码是这样的:
ODS EXCEL FILE="myFile.xlsx" (options sheet_name="CRIME TYPE");
PROC TABULATE DATA=myData;
TITLE 'myTitle';
BY crime_type;
CLASS year;
CLASS nation / ORDER=FREQ;
TABLES year, nationality / CONDENSE;
RUN;
ODS EXCEL CLOSE;
Run Code Online (Sandbox Code Playgroud)
这为我创建了一个包含不同工作表的 excel 文件:
THEFT
country1 country2 country3 ...
--------------------------------------
1990
1991
1992
--------------------------------------
ASSAULT
country1 country2 country3 ...
--------------------------------------
1990
1991
1992
--------------------------------------
Run Code Online (Sandbox Code Playgroud)
不幸的是,这些表没有不同罪行(盗窃、袭击等)的名称,而是被称为“犯罪类型 1”、“犯罪类型 2”等等(SHEET_NAME="CRIME TYPE"
)。
有谁知道如何根据变量的值命名工作表crime_type
?
我有一个关于MySQL中"更新"的问题.我有两张桌子table1
并且table2
已连接table1.id=table2.tab1
.现在,我想table2
根据值中的值更新值table1
.我试图像这样做:
UPDATE table2 SET table2.val='new value'
WHERE table1.id=table2.tab1 AND table1.val='xy'
Run Code Online (Sandbox Code Playgroud)
换句话说,我想更改相应条目的值为'xy'的val
所有条目的值.table2
table1
不幸的是,这不起作用.有人能给我一个暗示吗?
我有两个data.frames df1
和errors
和功能add_to_errors()
。该函数的参数是行数(of df1
)的向量,该函数应将选择的行添加到名为的新data.frame中errors
。
df1 <- data.frame(id=1:10,
var1=rep(NA, 2),
var2=rep(NA, 2))
errors <- data.frame()
add_to_errors <- function(ids){
rows_to_add <- df1[ids,]
errors <- rbind(errors, rows_to_add)
return(errors)
}
add_to_errors(c(1,2))
add_to_errors(c(6,7))
Run Code Online (Sandbox Code Playgroud)
当我执行add_to_errors(1, 2)
和时add_to_errors(6,7)
,errors
每次调用该函数似乎都被覆盖了。如何errors
在函数中作为全局变量访问?
输出应如下所示:
id var1 var2
1 1 NA NA
2 2 NA NA
3 6 NA NA
4 7 NA NA
Run Code Online (Sandbox Code Playgroud) 我拼命尝试将比例范围设置为 1 到 5。我试图使用ylim()
,scale_y_continuous(breaks = seq(1,5,1))
和coord_cartesian(ylim=c(1,5))
。如何才能做到这一点?感谢帮助!
n <- 10000
test <- data.frame(value = sample(1:5, size = n, replace = TRUE),
grp = sample(c("A", "B", "C"), size = n, replace = TRUE),
item = sample(c("Item1", "Item2", "Item3", "Item4", "Item5", "Item6"), size = n, replace = TRUE))
test %>%
group_by(item, grp) %>%
summarise(mean = mean(value, na.rm=TRUE)) %>%
ungroup() %>%
ggplot(aes(x = item, y = mean, group = grp, fill = grp)) +
geom_col(position = 'dodge') + …
Run Code Online (Sandbox Code Playgroud) 我想使用 RMarkdown 和 kable 创建一个 pdf 文档:
\n---\ntitle: "markdown testfile"\nauthor: "author"\ndate: "2023-05-01"\noutput:\n pdf_document: default\n html_document: default\n---\n\n```{r setup, include=FALSE}\noptions(repos = list(CRAN="http://cran.rstudio.com/"))\ninstall.packages("tidyverse")\ninstall.packages("kableExtra")\n\nlibrary(tidyverse)\nlibrary(kableExtra)\n```\n\n```{r}\niris %>% \n dplyr::slice_sample(n = 10) %>% \n kbl() %>% \n kable_styling()\n```\n
Run Code Online (Sandbox Code Playgroud)\n我收到的错误消息是:
\nFehler: Laden von Paket oder Namensraum f\xc3\xbcr \'kableExtra\': fehlgeschlagen\n.onLoad in loadNamespace() f\xc3\xbcr \'kableExtra\' fehlgeschlagen, Details:\nAufruf: !is.null(rmarkdown::metadata$output) && rmarkdown::metadata$output %in%\nFehler: \'length = 2\' in coercion to \'logical(1)\'\nAusf\xc3\xbchrung angehalten.\n
Run Code Online (Sandbox Code Playgroud)\n翻译成英文:
\nError: Failed to load package or namespace for \'kableExtra\':\n.onLoad failed in loadNamespace() for \'kableExtra\', Details:\nCall: …
Run Code Online (Sandbox Code Playgroud) 我的 data.frame 又出现了一些问题,我需要重组:
我的数据框如下所示。它描述了三个数据集 (1-3) 以及这三个数据集包含的列名:
df <- data.frame(df = c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3),
vars = c("var1", "var2", "var3", "var4",
"var1", "var1b", "var4",
"var5", "var1", "var2", "var7"))
df vars
1 1 var1
2 1 var2
3 1 var3
4 1 var4
5 2 var1
6 2 var1b
7 2 var4
8 3 var5
9 3 var1
10 3 var2
11 3 var7
Run Code Online (Sandbox Code Playgroud)
我的目标是有一个总表所示(该值是不完全从上面的那些),其中1只表示该变量包括在内,2个可变装置不包括在相应的数据帧df1
到df3
:
df %>% pivot_wider(names_from = df, values_from …
Run Code Online (Sandbox Code Playgroud) 我正在学习 Python 作为初学者,我想创建一个类Person
。在构造函数中,我想将我创建的每个实例放入一个名为“实例”的集合中。然后我希望instance() 方法返回所有实例。我怎样才能做到这一点?
class Person:
# Type annotations
__first_name: str
__last_name: str
instances: set
# Initializing variables
no_of_persons = 0
instances = set()
def __init__(self, firstname="unknown", lastname="unknown"):
self.__first_name = firstname
self.__last_name = lastname
Person.no_of_persons += 1
Person.instances.add() ## Here I have problems
@property
def first_name(self):
return self.__first_name
@first_name.setter
def first_name(self, firstname):
self.__first_name = firstname
@property
def last_name(self, ):
return self.__last_name
@last_name.setter
def last_name(self, lastname):
self.__last_name = lastname
def getFullName(self):
""" Returns a tuple of the firstname and …
Run Code Online (Sandbox Code Playgroud) 在R中将换行符插入char-Variable的最优雅方法是什么?
例如,我有以下data.frame:
longValues <- c("This is a very long text that should include linebreaks", "And also this is a very long text, that should include linereaks", "And this is an even longer text without linebreaks")
df <- data.frame(longValues)
df
Run Code Online (Sandbox Code Playgroud)
我想创建一个包含与相同值的新变量longValues
,但应在一定数量的字符(比如说20)之后插入一个换行符(“ \ n”),但应在两个单词之间插入一个换行符。因此,如果单词中包含20.个字符,则换行符应位于该单词之后。
结果应该是这样的:
df$linebreaks <- c("This is a very long\n
text that should include\n
linebreaks",
"And also this is a very
long text, that should\n
include linereaks",
"And this is an even \n
longer text without \n
linebreaks")
Run Code Online (Sandbox Code Playgroud)