%in%R中是否存在短暂否定!%in%或%!in%?
当然,我可以否定c("A", "B") %in% c("B", "C")通过!(c("A", "B") %in% c("B", "C"))(见这个问题),但我会prefere一个更直接的方法,节省了一个括号(都想必大多数人宁愿c("A", "B") != c("B", "C")过!(c("A", "B") == c("B", "C"))).
假设我有一个类似于下面的数据帧,我如何得到2个特定列之间的相关性,然后按"ID"列分组?我相信Pandas'corr'方法可以找到所有列之间的相关性.如果可能的话,我也想知道如何使用.agg函数(即np.correlate)找到'groupby'相关性.
是)我有的:
ID Val1 Val2 OtherData OtherData
A 5 4 x x
A 4 5 x x
A 6 6 x x
B 4 1 x x
B 8 2 x x
B 7 9 x x
C 4 8 x x
C 5 5 x x
C 2 1 x x
Run Code Online (Sandbox Code Playgroud)
我需要的:
ID Correlation_Val1_Val2
A 0.12
B 0.22
C 0.05
Run Code Online (Sandbox Code Playgroud)
谢谢!
在运行我的R-package(via devtools::check())的检查时,我面临警告''qpdf' is needed for checks on size reduction of PDFs.我发现这个问题是建议(如果我理解答案正确)运行Sys.which(Sys.getenv("R_QPDF", "qpdf")),看看是否找到qpdf.在我的情况下,这只是返回
qpdf
""
所以,我想我没有正确安装qpdf.不幸的是,在Windows上安装qpdf似乎相当复杂.我的第一个问题是:为Windows安装qpdf真的是如此痛苦和复杂吗?还是有一个简单的解决方案?
我按照说明进行操作,直到将C:\ MinGW-w64\bin和C:\ MinGW-w64\lib\mingw添加到PATH变量中.但是后来我没有找到安装 qpdf的更多具体说明,只是关于如何用不同的其他程序构建 qpdf.第二个问题是:我的假设是正确的,在我构建 qpdf之后它已经安装了吗?但真正的问题是:构建qpdf的最佳方法是什么?我试过./config-mingw32和./config-mingw64从部分"建设与MinGW的"命令,在我的C:\ MinGW的\ MSYS\1.0\BIN\bash.exe,但得到的错误信息./config-mingw32: No such file or directory,而且不知道如何解决这个问题.
我正在使用Windows 10,R版本3.3.2 Patched(2017-01-07 r71934) - "真诚的南瓜补丁"和RStudio 1.0.136.
我的函数从字典接收值。以下 MWE 应该给人留下印象:
def f(x):
print([y for y in x])
f({'a': 0, 'b': 1}.values()) #prints [0, 1]
Run Code Online (Sandbox Code Playgroud)
的类型x不是dict也不是list而是dict_values。然而def f(x: dict_values):给出了NameError: name 'dict_values' is not defined.
那么,如何在类型提示中指定 dict_values 呢?
该R软件包mice附带以下示例:
library("mice")
imp <- mice(nhanes)
fit <- with(data=imp,exp=lm(bmi~hyp+chl))
Run Code Online (Sandbox Code Playgroud)
我想要一个灵活的调用,with()例如:
model_formula <- bmi~hyp+chl
fit <- with(data=imp,exp=lm(model_formula))
Run Code Online (Sandbox Code Playgroud)
但这会抛出Error in eval(predvars, data, env) : object 'bmi' not found. 我搜索了类似的问题。我发现的最隐蔽的问题是帮助理解我在 R 中定义的函数中的错误。我的印象是,编写exp=lm(model_formula)表达式lm(model_formula)会立即求值,但是编写表达式时exp = lm(bmi~hyp+chl)不会立即求值 - 相反,求值将在函数中进行with.mice()?如果是这样,我怎样才能防止即时评估?
My function returns a pandas series, where all elements have a specific type (say str). The following MWE should give an impression:
import pandas as pd
def f() -> pd.Series:
return pd.Series(['a', 'b'])
Run Code Online (Sandbox Code Playgroud)
Within the type hints I want to make clear, that f()[0] will always be of type str (compared for example to a function that would return pd.Series([0, 1])). My initial guess was to use def f() -> pd.Series[str]: what gives the TypeError: 'type' object is …
我尝试构建一个带有一个 x 轴和两个 y 轴的图形,所有轴都来自一个数据框(类似于此处的图形)。这是我的示例数据:
import pandas as pd
df = pd.DataFrame(data={'year': [2000, 2001, 2002],
'deaths': [327, 456, 509],
'cheese': [13.5, 13.7, 13.8]})
Run Code Online (Sandbox Code Playgroud)
我有一个数据框,应将其分组,然后在每个组上应用几个函数。通常,我会这样做groupby().agg()(参见将多个函数应用于多个 groupby 列),但我感兴趣的函数不需要一列作为输入,而是需要多列。
我了解到,当我有一个具有多列作为输入的函数时,我需要apply(参见使用多列的 Pandas DataFrame 聚合函数)。
但是,当我有多个具有多个列作为输入的函数时,我需要什么?
import pandas as pd
df = pd.DataFrame({'x':[2, 3, -10, -10], 'y':[10, 13, 20, 30], 'id':['a', 'a', 'b', 'b']})
def mindist(data): #of course these functions are more complicated in reality
return min(data['y'] - data['x'])
def maxdist(data):
return max(data['y'] - data['x'])
Run Code Online (Sandbox Code Playgroud)
我期待类似的东西df.groupby('id').apply([mindist, maxdist])
min max
id
a 8 10
b 30 40
Run Code Online (Sandbox Code Playgroud)
(通过实现pd.DataFrame({'mindist':df.groupby('id').apply(mindist),'maxdist':df.groupby('id').apply(maxdist)}- 如果我有许多函数要应用于分组数据框,这显然不是很方便)。最初我以为这个OP有同样的问题,但他似乎对 很满意aggregate,这意味着他的函数只接受一列作为输入。
我有一个带有要映射的变量的DataFrame,使用的字典中的键不是“普通”字符串,而是正则表达式。
import pandas as pd
import re
df = pd.DataFrame({'cat': ['A1', 'A2', 'B1']})
Run Code Online (Sandbox Code Playgroud)
我想做的是df['cat'].map({'A\d': 'a', 'B1': 'b'}),但A\d似乎没有被解释为正则表达式。我可以用这种简单的MWE做df['cat'].map({'A1': 'a', 'A2': 'a', 'B1': 'b'}),但是在现实世界中,正则表达式要复杂得多。另外,字典要复杂得多,因此这里的解决方案(需要添加开始和结束语句并re.compile在键周围应用)是不可行的。
根据快捷方式帮助(Alt+ Shift+ K)组合Ctrl+ Shift+ D应该运行文档例程.(这也是Hadley Wickhams的第5.1节"R包" http://runsheng.github.io/attachment/r-packages.pdf中所说的.)但是在我的RStudio设置中,它会使所选择的行复杂化(所以我不喜欢不相信这是一个全局使用问题,在这里得出答案:Visual Studio无法识别组合键.在https://support.rstudio.com/hc/en-us/community/posts/201819358-Ctrl-Shift-D-doesn-t-run-document-in-preview-release问题完全是靠一个人,但没有解决方案.我如何让RStudio做它应该做的事情?
我正在使用RStudio版本0.99.902并sessionInfo()给出:
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C
[5] LC_TIME=German_Germany.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] hmi_0.1.0 roxygen2_5.0.1 coda_0.18-1 MASS_7.3-45 devtools_1.12.0
loaded via a namespace (and not attached):
[1] magrittr_1.5 tools_3.3.1 withr_1.0.2 rstudioapi_0.6 …Run Code Online (Sandbox Code Playgroud) 简而言之:如何忽略pd.NaT列表中放入的内容max?
import datetime
max([pd.NaT, datetime.datetime(1900, 1, 1), datetime.datetime(2000, 1, 1)])
Run Code Online (Sandbox Code Playgroud)
预期输出是Timestamp('2000-01-01 00:00:00'). 即使这个问题似乎是一个标准问题,除了这个非Pythonic的问题之外我找不到解决方案:
max(pd.DataFrame([pd.NaT, datetime.datetime(1900, 1, 1), datetime.datetime(2000, 1, 1)]).dropna()[0])
Run Code Online (Sandbox Code Playgroud) 以下单元测试在运行时失败(使用 pytest),但是当我调试它时,它通过了:
def test():
assert list(set(['B', 'A'])) == ['A', 'B']
Run Code Online (Sandbox Code Playgroud)
我知道集合没有 order,但我不明白如何确定list(s) ifs是一个集合的结果,这在编写单元测试时至关重要。这里提到的解决方法是将代码更改为sorted(s),但我想了解list(s)运行时会发生什么。
pandas ×5
python ×5
r ×4
python-3.x ×2
type-hinting ×2
aggregate ×1
apply ×1
axis ×1
correlation ×1
dictionary ×1
evaluation ×1
function ×1
group-by ×1
key ×1
list ×1
match ×1
matplotlib ×1
max ×1
mingw ×1
missing-data ×1
negation ×1
plot ×1
qpdf ×1
r-mice ×1
regex ×1
roxygen2 ×1
rstudio ×1
series ×1
set ×1
sorting ×1
unit-testing ×1