我有一个数据集,我想按组生成行位置.例如
library(data.table)
data<-data.table(Position=c(1,2,3,4,5,6,7,8,9,10),
Category=c("M","M","M","M","F","F","F","M","M","F"))
Run Code Online (Sandbox Code Playgroud)
我按类别分组,并希望按组创建作为行位置的列.像下面或data.table一样的东西
dataByGroup %>% group_by(Category) %>% mutate(positionInCategory = 1:nrow(Category))
Run Code Online (Sandbox Code Playgroud)
无法弄清楚如何实现这一目标?
期望的输出:
| Position|Category | positionInCategory|
|--------:|:--------|------------------:|
| 1|M | 1|
| 2|M | 2|
| 3|M | 3|
| 4|M | 4|
| 5|F | 1|
| 6|F | 2|
| 7|F | 3|
| 8|M | 5|
| 9|M | 6|
| 10|F | 4|
Run Code Online (Sandbox Code Playgroud) 试图更新侧边栏在flexdashboard选项卡上单击时.无法让它发挥作用.
---
title: "Test Sidebar"
output:
flexdashboard::flex_dashboard:
orientation: rows
runtime: shiny
---
```{r setup}
library(flexdashboard)
library(shiny)
library(shinyjs)
useShinyjs(rmd = TRUE)
```
Sidebar {.sidebar data-width=250}
=======================================================================
```{r}
div(id = "one", selectInput("input1",label= "Show Always",choices=c("a","b","c")))
div(id = "two",selectInput("input2",label = "Show only on Tab 1", choices=c("d","e","f")))
```
<!-- Update the sidebar based on the tab chosen. Generated HTML code shown for tabs-->
Tab 1 <!-- <a href="#section-tab-1" aria-expanded="true" data-toggle="tab"> -->
=======================================================================
```{r}
useShinyjs(rmd = TRUE)
shinyjs::onclick("#section-tab-2",shinyjs::hide(id = "two"))
shinyjs::onclick("#section-tab-1",shinyjs::show(id = …Run Code Online (Sandbox Code Playgroud) 有没有更好的方法可以使用 pd.crosstab() 或 pd.pivot_table() 在 Pandas 中创建列联表来生成计数和百分比。
当前解决方案
cat=['A','B','B','A','B','B','A','A','B','B']
target = [True,False,False,False,True,True,False,True,True,True]
import pandas as pd
df=pd.DataFrame({'cat' :cat,'target':target})
Run Code Online (Sandbox Code Playgroud)
使用交叉表
totals=pd.crosstab(df['cat'],df['target'],margins=True).reset_index()
percentages = pd.crosstab(df['cat'],
df['target']).apply(lambda row: row/row.sum(),axis=1).reset_index()
Run Code Online (Sandbox Code Playgroud)
和合并
summaryTable=pd.merge(totals,percentages,on="cat")
summaryTable.columns=['cat','#False',
'#True','All','percentTrue','percentFalse']
Run Code Online (Sandbox Code Playgroud)
输出
+---+-----+--------+-------+-----+-------------+--------------+
| | cat | #False | #True | All | percentTrue | percentFalse |
+---+-----+--------+-------+-----+-------------+--------------+
| 0 | A | 2 | 2 | 4 | 0.500000 | 0.500000 |
| 1 | B | 2 | 4 | 6 | 0.333333 | 0.666667 …Run Code Online (Sandbox Code Playgroud) 创建 ggplot 对象的绘图对象。是否可以全局设置模式栏选项,以便每个绘图仅显示以下模式栏按钮,如 myPlot_c 中所示。
library(ggplot2)
library(plotly)
library(dplyr)
myPlot_a <- ggplot(mtcars, aes(x=disp,y=mpg)) + geom_point()
myPlot_b <- ggplotly(myPlot_a)
#Is it possible to set this global, so don't have to repeat for each plot
myPlot_c <- myPlot_b %>%
config(displaylogo=F,
modeBarButtonsToRemove =
list("sendDataToCloud","zoom2d","pan2d","select2d","lasso2d",
"zoomIn2d","zoomOut2d","autoScale2d","hoverClosestCartesian",
"hoverCompareCartesian"))
Run Code Online (Sandbox Code Playgroud)
我可以包装在一个函数中,但发现如果每次都设置 modebarButtons,则与闪亮的应用程序结合使用 renderPlotly() 会遇到很多滞后。
我有一个数据框,我想用另一个数据框的值替换一列中的值。
df = pd.DataFrame({'id1': [1001,1002,1001,1003,1004,1005,1002,1006],
'value1': ["a","b","c","d","e","f","g","h"],
'value3': ["yes","no","yes","no","no","no","yes","no"]})
dfReplace = pd.DataFrame({'id2': [1001,1002],
'value2': ["rep1","rep2"]})
Run Code Online (Sandbox Code Playgroud)
我需要使用带有公用键的 groupby,当前的解决方案是使用循环。有没有更优雅(更快)的方法来使用 .map(apply) 等。我想最初使用 pd.update(),但似乎不是正确的方法。
groups = dfReplace.groupby(['id2'])
for key, group in groups:
df.loc[df['id1']==key,'value1']=group['value2'].values
Run Code Online (Sandbox Code Playgroud)
输出
df
id1 value1 value3
0 1001 rep1 yes
1 1002 rep2 no
2 1001 rep1 yes
3 1003 d no
4 1004 e no
5 1005 f no
6 1002 rep2 yes
7 1006 h no
Run Code Online (Sandbox Code Playgroud) 我有一个数据集,包括用户和顺序事件以及中间的非事件.
DT = data.table(user = c("1001","1001","1001","1001","1001","1001",
"1002","1002","1002","1002"),
event = c(NA,"e1",NA,NA,NA,"e2",
"e1",NA,NA,"e2"))
Run Code Online (Sandbox Code Playgroud)
我希望能够在用户组发生事件之前计算行(非事件).预期结果:
user event rows.before.event
1: 1001 NA NA
2: 1001 e1 1
3: 1001 NA NA
4: 1001 NA NA
5: 1001 NA NA
6: 1001 e2 3
7: 1002 e1 0
8: 1002 NA NA
9: 1002 NA NA
10: 1002 e2 2
Run Code Online (Sandbox Code Playgroud)
试过rleid()但没有成功.欢迎任何建议.
我有两个data.tables.我想在一个中使用键来计算另一个中的键.
DT1 <- data.table(A = c("v1","v2","v1","v2","v3","v4","v5","v6","v1","v2"),
B = c(1,11,111,2,22,222,3,33,333,4))
DT2 <- data.table(C = c("v1","v3","v99"))
setkey(DT1,A)
setkey(DT2,C)
Run Code Online (Sandbox Code Playgroud)
使用DT2查找DT1中的行将返回外部联接.
nrow(DT1[DT2,]) #returns 5 (v1*3, v3*1, v99) "v99" not in DT2
DT1[DT2,]
A B
1: v1 1
2: v1 111
3: v1 333
4: v3 22
5: v99 NA
Run Code Online (Sandbox Code Playgroud)
是否可以使用相同的语法强制左连接?
如何向geom_line()添加缩放颜色以指示线段向上/向下 - 无需使用重塑,dcast预处理数据并创建另一个变量?
library(data.table)
library(ggplot2)
my.data <- data.table(id = c(1,1,2,2,3,3,4,4),
loc = c("a","b","a","b","a","b","a","b"),
value = c(10.3,11.5,12.5,12.1,10.5,9.8,9.7,10.7))
p<-ggplot(my.data ,aes(x=loc,y=value,group=id)) + geom_line()
Run Code Online (Sandbox Code Playgroud) r ×6
data.table ×3
ggplot2 ×2
pandas ×2
python ×2
shiny ×2
apply ×1
crosstab ×1
dplyr ×1
javascript ×1
left-join ×1
outer-join ×1
pivot-table ×1
plotly ×1
shinyjs ×1