我有一个看起来像这个玩具示例的数据集。数据描述了一个人搬迁到的位置以及自搬迁发生以来的时间。例如,人 1 从农村开始,但在 463 天前搬到了城市(第 2 行),在 415 天前从这个城市搬到了城镇(第 3 行)等。
set.seed(123)
df <- as.data.frame(sample.int(1000, 10))
colnames(df) <- "time"
df$destination <- as.factor(sample(c("city", "town", "rural"), size = 10, replace = TRUE, prob = c(.50, .25, .25)))
df$user <- sample.int(3, 10, replace = TRUE)
df[order(df[,"user"], -df[,"time"]), ]
Run Code Online (Sandbox Code Playgroud)
数据:
time destination user
526 rural 1
463 city 1
415 town 1
299 city 1
179 rural 1
938 town 2
229 town 2
118 city 2
818 city 3
195 city 3
Run Code Online (Sandbox Code Playgroud)
我希望将此数据汇总为以下格式。即,计数类型重定位的 …
假设我有一系列SQL表,其名称为name_YYYY_WWYYYY = year和WW = week number.如果我调用一个将用户定义的日期引导到右表的函数.
如果输入的日期是"20110101":
SELECT EXTRACT (WEEK FROM DATE '20110101') 返回52和
SELECT EXTRACT (YEAR FROM DATE '20110101') 返回2011年.
虽然是没有错的这些结果我想"20110101"要么指向表name_2010_52或name_2011_01,不是name_2011_52象现在这样,当我concanate结果,形成表的查询.
这个问题的优雅解决方案?
我知道可以使用eval(parse())和as.names()函数将字符串作为变量名传递。但我的问题有点不同。
我有一个包含数据和列名称的字符串,例如字符串:data1$column2。当我尝试上述命令时,我收到变量的变量未找到错误 data1$column2。变量本身当然是被调用的data1,因此无法找到,因为 R 将整个字符串解释为变量名。
如何让 $ 符号作为列引用?某种粘贴为文本命令也很棒。也就是说,如果我可以将字符串作为控制台输入的文字部分传递。
例子
attach(iris)
col_names <- cbind("iris$Sepal.Length", "iris$Sepal.Width")
col_names
Run Code Online (Sandbox Code Playgroud)
现在我想做:
"as.data.frame(parse(col_names))"
Run Code Online (Sandbox Code Playgroud)
也就是说,可以解释为:
as.data.frame(cbind(iris$Sepal.Length, iris$Sepal.Width))
Run Code Online (Sandbox Code Playgroud) 我的数据中有以下行名称:
column_01.1
column_01.2
column_01.3
column_02.1
column_02.2
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令拆分这些rownames:
strsplit(rownames(my_data),split= "\\.")
Run Code Online (Sandbox Code Playgroud)
并获取列表:
[[1]]
[1] "column_01" "1"
[[2]]
[1] "column_01" "2"
[[3]]
[1] "column_01" "3"
...
Run Code Online (Sandbox Code Playgroud)
但是因为我想要第一部分中的字符并完全丢弃第二部分,如下所示:
column_01
column_01
column_01
column_02
column_02
Run Code Online (Sandbox Code Playgroud)
我已经没有技巧只提取这部分信息.我已经尝试了unlist()和as.data.frame()的一些选项,但没有运气.或者是否有更简单的方法来分割字符串?我不想as.character(substring(rownames(my_data),1,9))用作"."的位置.可以改变(虽然它适用于这个例子).
我正在尝试创建我的数据的单热表示。这是我的方法:
data(iris)
iris = as.data.frame(apply(iris, 2, function(x) as.factor(x)))
head(iris)
iris_ohe <- data.frame(model.matrix(~.-1, iris))
head(iris_ohe)
dim(iris_ohe)
Run Code Online (Sandbox Code Playgroud)
问题是,我正在处理的数据有超过 100 万行,在进行编码时,我得到了一个超过 100 列的矩阵。这太多了R,我的内存不足:
Error: cannot allocate vector of size 10204.5 Gb
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法可以尝试?
我想使用 Automator 和 AppleScript 在 Safari 中填写表单。我有一个功能脚本,看起来像这个玩具示例:
on run {}
tell application "System Events" to keystroke "Hello"
tell application "System Events" to keystroke tab
tell application "System Events" to keystroke "World"
end run
Run Code Online (Sandbox Code Playgroud)
我希望当我位于浏览器中的特定位置时使用键盘快捷键来执行它。但是,当我这样做时,我遇到了权限问题:
The action "Run AppleSCript" encountered an error:
"System Events got an error: Automator Workflow Runner
(WorkflowServiceRunner, my_script_name) is not allowed to send keystrokes"
Run Code Online (Sandbox Code Playgroud)
在System Prefrences -> Security & Privacy -> Privacy -> Accessibility“我已允许Automator和”中AppleScript Utility,在选项卡下 Automation,我已允许System EventsSafari。
如果我也允许 …
r ×4
applescript ×1
automator ×1
dataframe ×1
datetime ×1
grouping ×1
macos ×1
postgresql ×1
safari ×1