如何将一个数据框附加到另一个数据框,类似于SQL union或R rbind?
假设我有数据框A并B定义如下.
A = DataFrame(x = [1, 2, 3], y = [4, 5, 6])
B = DataFrame(x = [4, 5, 6], y = [7, 8, 9])
Run Code Online (Sandbox Code Playgroud)
解决这个问题的一种方法如下:
C = deepcopy(A)
for i = 1:size(B, 1)
push!(C, Array(B[i,:]))
end
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但对我来说感觉有些神奇.有没有更好或更惯用的方法来做到这一点?
也许这是我在文档中忽略的内容,但是如何在Julia中查看当前定义的变量列表?例如,在R中,您可以使用ls()它来为您提供当前范围中的用户定义对象的列表.朱莉娅有同等的人吗?
这与此问题非常相似,但似乎whos函数(以及names)将列出模块和其他非用户定义的内容.如何简单列出用户定义但不从其他模块导出的变量?
我需要绘制密度而不是频率的加权直方图.我知道这freq = FALSE是可用的,hist()但你不能指定权重.在ggplot2我能做到这一点:
library(ggplot2)
w <- seq(1,1000)
w <-w/sum(w)
v <- sort(runif(1000))
foo <- data.frame(v, w)
ggplot(foo, aes(v, weight = w)) + geom_histogram()
Run Code Online (Sandbox Code Playgroud)
但在哪里相当于freq = FALSE?
我正在为包含自己的测试套件的C库创建一个Homebrew公式.作为test公式块的一部分,我想运行下载文件中包含的测试.测试作为make目标(make test)运行.但是,Homebrew test块在自己的临时目录中运行,下载的文件不在路径中.也就是说,以下不起作用,因为它找不到文件:
test do
system "make", "test"
end
Run Code Online (Sandbox Code Playgroud)
如何访问最初下载和解压缩文件的位置?我无法在文档中找到有关该信息的任何信息.或者在这种情况下是否有更好的Homebrew测试解决方案?
我是Windows批处理编程和Stack Overflow的新手,所以如果我问你那些经验丰富,才华横溢的人,那么请原谅我.我正在使用Windows批处理(.bat)来查找包含某个字符串的文件findstr.但是,我试图跳过目录中的某些文件夹.
setlocal EnableDelayedExpansion
set basedir=C:\folder
for /f %%g in ('dir /a:-h /b %basedir% ^| findstr /v "Projects" ^| findstr /v "Archive"') do (
findstr /i /m /s /c:"request" %basedir%\%%g *.* > %basedir%\Projects\list.txt
)
Run Code Online (Sandbox Code Playgroud)
当我查看list.txt中的文件输出时findstr,我发现我告诉它不要搜索的文件夹被搜索到了.也就是说,输出看起来像这样:
C:\folder\somefile.rtf
C:\folder\Requests\anotherfile.rtf
C:\folder\Projects\dontsearchme.txt
C:\folder\Archive\dontsearchmeeither.txt
C:\folder\Archive\Projects\dontsearchme.txt
Run Code Online (Sandbox Code Playgroud)
如果它工作正常,只有C:\folder\somefile.rtf和C:\folder\Requests\anotherfile.rtf将被列入LIST.TXT.为了测试循环代码,我使用了以下代码:
setlocal EnableDelayedExpansion
set basedir=C:\folder
for /f %%g in ('dir /a:-h /b %basedir% ^| findstr /v "Projects" ^| findstr /v "Archive"') do (
echo %basedir%\%%g
)
Run Code Online (Sandbox Code Playgroud)
该代码按预期工作; 它会跳过"项目"和"存档"文件夹.我认为问题与我如何打电话有关,findstr但我无法确定我的方式错误.任何见解都将非常感谢!
非常感谢!
-Alex
如果我的问题看起来真的很简单或天真,我提前道歉,但我试图从概念上理解该函数的作用simulate(即,我对它的逻辑感兴趣,无论它是否适用于 lm、lme 等) .)
假设我正在对以下数据进行简单的多元回归:
n <- 40
x1 <- rnorm(n, mean=3, sd=1)
x2 <- rnorm(n, mean=4, sd=1.25)
y <- 2*x1 + 3*x2 + rnorm(n, mean=2, sd=1)
mydata <- data.frame(x1, x2, y)
mod <- lm(y ~ x1 + x2, data=mydata)
Run Code Online (Sandbox Code Playgroud)
当该函数simulate应用于这种情况时会做什么?所以如果我这样做:
simulate(mod, nsim=2)
Run Code Online (Sandbox Code Playgroud)
我得到的两个向量是什么?
本质上,它类似于这样做:
replicate(2, y + rnorm(n=length(y), mean="some value", sd="some other value"))
Run Code Online (Sandbox Code Playgroud)
如果类似这样的逻辑,那么“某个值”和“某个其他值”会是什么?他们会是mean(mod$residuals)和sd(mod$residuals)吗?或者实际残差的排列?或者完全是别的什么?
或者它正在做一些完全不同的事情?
如果有人能用simulate简单的非技术术语解释/确认如何工作,我们将不胜感激。
我有一个DataTable不同类型的列.我想要的是DataTable具有相同列名但所有值都是字符串的.也就是说,如果这是第一个:
Name Age
-----------
John 31
Alice 27
Marge 45
Run Code Online (Sandbox Code Playgroud)
其中Name是一String列,Age是一Int32列,我想要的是:
Name Age
-----------
John 31
Alice 27
Marge 45
Run Code Online (Sandbox Code Playgroud)
其中,姓名和年龄是两个字符串列.输出表必须包含与输入表相同的值,但每个值都必须转换为字符串.任何人都可以提供有关如何做到这一点的任何见解吗?我想过可能会做类似的事情
foreach (DataColumn col in inputTable.Columns)
{
outputTable.Columns.Add(col.ColumnName, typeof(string));
foreach (DataRow row in inputTable.Rows)
{
...??
}
}
Run Code Online (Sandbox Code Playgroud)
或者可能有更好或更有效的方法?任何指导将不胜感激.
为什么SAS使用(例如)sashelp.vcolumn与等效的SQL表格相比,从数据步骤视图创建数据集需要更长的时间dictionary.columns?
我做了一个测试fullstimer,似乎证实了我对性能差异的怀疑.
option fullstimer;
data test1;
set sashelp.vcolumn;
where libname = 'SASHELP' and
memname = 'CLASS' and
memtype = 'DATA';
run;
proc sql;
create table test2 as
select *
from dictionary.columns
where libname = 'SASHELP' and
memname = 'CLASS' and
memtype = 'DATA';
quit;
Run Code Online (Sandbox Code Playgroud)
日志的摘录:
NOTE: There were 5 observations read from the data set SASHELP.VCOLUMN.
WHERE (libname='SASHELP') and (memname='CLASS') and (memtype='DATA');
NOTE: The data set WORK.TEST1 has 5 observations and 18 variables.
NOTE: …Run Code Online (Sandbox Code Playgroud) 我有一个列表A和列表B,我想从这两个列表中获取公共元素,但希望当我获取公共元素时,它们应该保持 List 的顺序A。
首先,我开始将它们转换为集合并取交叉点,但这存在维护顺序的问题。
common = list(set(A).intersection(set(B)))
Run Code Online (Sandbox Code Playgroud)
所以我决定做列表理解:
common = [i for i in A if i in B]
Run Code Online (Sandbox Code Playgroud)
我正进入(状态
IndexError: too many indices for array
Run Code Online (Sandbox Code Playgroud) 假设我有Dict如下定义:
x = Dict{AbstractString,Array{Integer,1}}("A" => [1,2,3], "B" => [4,5,6])
Run Code Online (Sandbox Code Playgroud)
我想将其转换为DataFrame对象(来自DataFrames模块)。构造 aDataFrame的语法与构造字典类似。例如,上面的字典可以手动构建为一个数据框,如下所示:
DataFrame(A = [1,2,3], B = [4,5,6])
Run Code Online (Sandbox Code Playgroud)
我还没有找到从字典到数据框的直接方法,但我认为可以利用句法相似性并编写一个宏来做到这一点。以下根本不起作用,但它说明了我想到的方法:
macro dict_to_df(x)
typeof(eval(x)) <: Dict || throw(ArgumentError("Expected Dict"))
return quote
DataFrame(
for k in keys(eval(x))
@eval ($k) = $(eval(x)[$k])
end
)
end
end
Run Code Online (Sandbox Code Playgroud)
我还尝试将其编写为一个函数,当所有字典值具有相同的长度时,它确实有效:
function dict_to_df(x::Dict)
s = "DataFrame("
for k in keys(x)
v = x[k]
if typeof(v) <: AbstractString
v = string('"', v, '"')
end
s *= "$(k) = $(v),"
end
s = …Run Code Online (Sandbox Code Playgroud)