如果我想转换以下data.frame:
>M
name ID
a 1
b,c 2
d,e 3
f 4
到这一个:
>M
name ID
a 1
b 2
c 2
d 3
e 3
f 4
如何对第一列的所有元素进行此转换?
由于
答案 0 :(得分:2)
您可以使用E_USER_DEPRECATED
中的/**
* Example class
*
* @property string $foo A foo variable.
*/
class Example {
public function __get($name)
{
if ($name === 'foo') {
trigger_error('Property $foo is deprecated and should no longer be used', E_USER_DEPRECATED);
}
// ...
}
}
:
unnest()
答案 1 :(得分:1)
以下是基础R解决方案:
# split the names into a list
nameList <- strsplit(df$name, split=",")
# get your new data.frame
newdf <- data.frame(names=unlist(nameList), ID=rep(df$ID, sapply(nameList, length)))
这使用rep
重复ID,其名称变量的分割次数相同。这意味着如果您还有3个或更多名称,它将起作用。
数据强>
df <- read.table(header=T, text="name ID
a 1
b,c 2
d,e 3
f 4", stringsAsFactors=F)
<强>输出强>
> newdf
names ID
1 a 1
2 b 2
3 c 2
4 d 3
5 e 3
6 f 4