在R中,可以使用tidyverse
包中的separate()
函数将一个字符串变量拆分成多个新的变量。下面是一个示例函数,它使用Python编写,以实现与separate()
函数相同的功能。
import pandas as pd
def separate(data, col, into, sep, remove=False, convert=False):
df = data.copy()
new_cols = into.split(",")
for i, new_col in enumerate(new_cols):
new_col = new_col.strip()
if i == 0:
df[new_col] = df[col].str.split(sep, expand=True)[i]
else:
df[new_col] = df[col].str.split(sep, expand=True)[i].str.strip()
if remove:
df = df.drop(col, axis=1)
if convert:
for new_col in new_cols:
try:
df[new_col] = pd.to_numeric(df[new_col])
except:
pass
return df
这个函数接受以下参数:
data
:要拆分的数据集(DataFrame)col
:要拆分的变量名(字符串)into
:拆分后的新变量名,以逗号分隔(字符串)sep
:用于拆分的分隔符(字符串)remove
:是否删除原始变量,默认为False
(布尔值)convert
:是否尝试将拆分后的新变量转换为数值,默认为False
(布尔值)下面是一个示例用法:
data = pd.DataFrame({'col': ['A_B', 'C_D', 'E_F']})
separated_data = separate(data, 'col', 'var1, var2', '_', remove=True, convert=True)
print(separated_data)
输出结果为:
var1 var2
0 A B
1 C D
2 E F
这个函数使用pandas
库来实现拆分操作,并提供了删除原始变量和将新变量转换为数值的选项。