我有一个带有一个列的数据框,"Date"并希望此列中的所有值具有相同的值(仅限年份).例:
City Date
Paris 01/04/2004
Lisbon 01/09/2004
Madrid 2004
Pekin 31/2004
Run Code Online (Sandbox Code Playgroud)
我想要的是:
City Date
Paris 2004
Lisbon 2004
Madrid 2004
Pekin 2004
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
fr61_70xls = pd.ExcelFile('AMADEUS FRANCE 1961-1970.xlsx')
#Here we import the individual sheets and clean the sheets
years=(['1961','1962','1963','1964','1965','1966','1967','1968','1969','1970'])
fr={}
header=(['City','Country','NACE','Cons','Last_year','Op_Rev_EUR_Last_avail_yr','BvD_Indep_Indic','GUO_Name','Legal_status','Date_of_incorporation','Legal_status_date'])
for year in years:
# save every sheet in variable fr['1961'], fr['1962'] and so on
fr[year]=fr61_70xls.parse(year,header=0,parse_cols=10)
fr[year].columns=header
# drop the entire Legal status date column
fr[year]=fr[year].drop(['Legal_status_date','Date_of_incorporation'],axis=1)
# drop every row where GUO Name is empty
fr[year]=fr[year].dropna(axis=0,how='all',subset=[['GUO_Name']])
fr[year]=fr[year].set_index(['GUO_Name','Date_of_incorporation']) …Run Code Online (Sandbox Code Playgroud) 我似乎误解了尾递归; 根据这个stackoverflow问题, R不支持尾递归.但是,让我们考虑以下函数来计算第n个斐波纳契数:
迭代版本:
Fibo <- function(n){
a <- 0
b <- 1
for (i in 1:n){
temp <- b
b <- a
a <- a + temp
}
return(a)
}
Run Code Online (Sandbox Code Playgroud)
"朴素"递归版:
FiboRecur <- function(n){
if (n == 0 || n == 1){
return(n)
} else {
return(FiboRecur(n-1) + FiboRecur(n-2))
}
}
Run Code Online (Sandbox Code Playgroud)
最后我发现一个例子应该是尾调用递归:
FiboRecurTail <- function(n){
fib_help <- function(a, b, n){
if(n > 0){
return(fib_help(b, a+b, n-1))
} else {
return(a)
}
}
return(fib_help(0, 1, n))
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我们在调用这些函数时查看跟踪,我们得到的是:
Fibo(25) …Run Code Online (Sandbox Code Playgroud) 这可能看起来像一个奇怪的问题,但有没有办法将值传递给filter()基本上什么也没做?
data(cars)
library(dplyr)
cars %>% filter(speed==`magic_value_that_returns_cars?`)
Run Code Online (Sandbox Code Playgroud)
而且你会得到整个数据框cars.我认为这在闪亮的应用程序中很有用,用户只需要选择他想要过滤的值; 例如,用户可以选择"欧洲","非洲"或"美国",并在幕后对数据框进行过滤,然后返回具有"欧洲"描述性统计数据的表格(如果用户选择"欧洲") .但是如果用户想要在没有首先过滤的情况下拥有描述性统计数据呢?是否有一个值可以传递过滤到"取消"过滤器并将整个数据帧传递给summary()?