我有97M行的长表.每行包含一个人采取的操作的信息以及该操作的时间戳,格式如下:
actions <- c("walk","sleep", "run","eat")
people <- c("John","Paul","Ringo","George")
timespan <- seq(1000,2000,1)
set.seed(28100)
df.in <- data.frame(who = sample(people, 10, replace=TRUE),
what = sample(actions, 10, replace=TRUE),
when = sample(timespan, 10, replace=TRUE))
df.in
# who what when
# 1 Paul eat 1834
# 2 Paul sleep 1295
# 3 Paul eat 1312
# 4 Ringo eat 1635
# 5 John sleep 1424
# 6 George run 1092
# 7 Paul walk 1849
# 8 John run 1854
# 9 George sleep 1036
# …
Run Code Online (Sandbox Code Playgroud) 我正在绘制许多时间序列图,并且需要具有一致的 x 值范围(日期)来比较这些图。我尝试使用expand_limits
,但没有用。修复它的最佳方法是什么?我应该使用continuous_scale
吗?
这会产生不同的范围:
library(ggplot2)
#Example Data
ID <- c(rep(1, 3), rep(2, 3))
date1 <- as.Date(c("2015-02-01", "2015-03-01", "2015-04-01",
"2015-03-01", "2015-03-15", "2015-03-31"), "%Y-%m-%d")
v1 <- rep(1:3, 2)
df <- data.frame(ID, date1, v1)
df
p1 <- ggplot(df[df$ID == 1,], aes(x = date1, y = v1)) +
geom_point(size = 3, colour = "#0000FF")
p2 <- ggplot(df[df$ID == 2,], aes(x = date1, y = v1)) +
geom_point(size = 3, colour = "#0000FF")
plot(p1)
plot(p2)
Run Code Online (Sandbox Code Playgroud)
这就是我试图修复它的方式:
p2 <- ggplot(df[df$ID == 2,], …
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取href
使用 Xpath 代码的内容,如这两篇 文章中所述。不幸的是,除了 URL 之外,代码还返回了实际的文本“href”和几个空格。我怎样才能避免这种情况?
library(XML)
html <- readLines("http://www.msu.edu")
html.parse <- htmlParse(html)
Node <- getNodeSet(html.parse, "//div[@id='MSU-top-utilities']//a/@href")
Node[[1]]
# > Node[[1]]
# href
# "students/index.html"
# attr(,"class")
# [1] "XMLAttributeValue"
Run Code Online (Sandbox Code Playgroud) 我试图使用函数创建新变量,lapply
而不是使用循环在数据中正常工作.我曾经使用Stata,并且会用类似于此处讨论的方法解决这个问题.
由于在R中以编程方式命名变量是如此困难或至少是尴尬(并且似乎你不能使用索引assign
),我已经将命名过程留到了之后lapply
.然后我使用for
循环在合并之前进行重命名,然后再用于合并.有更有效的方法吗?我该如何更换循环?我应该做某种重塑吗?
#Reproducible data
data <- data.frame("custID" = c(1:10, 1:20),
"v1" = rep(c("A", "B"), c(10,20)),
"v2" = c(30:21, 20:19, 1:3, 20:6), stringsAsFactors = TRUE)
#Function to analyze customer distribution for each category (v1)
pf <- function(cat, df) {
df <- df[df$v1 == cat,]
df <- df[order(-df$v2),]
#Divide the customers into top percents
nr <- nrow(df)
p10 <- round(nr * .10, 0)
cat("Number of people in the Top 10% :", p10, …
Run Code Online (Sandbox Code Playgroud)