如何使用mySpecies <- data.frame(
Species=c("lazica uniflora setosa",
"virginica setosa uniflora loczyi",
"versicolor virginica"))
解决以下玩具问题:
取一个数据框,其中每行包含至少两个用空格分隔的虹膜种类:
unique(iris$Species)
我想在“mySpecies&#39;”中添加2列。其中每一行包含Sepal.Length和Sepal.Width的平均值
仅适用于单独查找表中可用的物种:虹膜数据集:iris
此示例的输出应该是mySpecies数据框,其中包含额外的&#39; Sepal.Length.mean&#39;和&#39; Sepal.Width.mean&#39;列包含虹膜$ Species中出现的每个物种的变量的平均值。
所以第一行只包含Sepal.Length和Sepal.Width,因为其他物种名称不会出现在iris
中。然而,第二行将包含Sepal.Length和Sepal.Width在&virginica&#39;的范围内。和&#39; setosa&#39;,因为它们都出现在查找表中(即from django import forms
from .models import Contact
from django.db import models
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
fields = [
'name',
'email',
'message',
]
def __init__(self, *args, **kwargs):
super(ContactForm, self).__init__(*args, **kwargs)
self.fields['name'].widget = forms.TextInput(attrs={
'placeholder': 'Name',
'required': True})
self.fields['email'].widget = forms.TextInput(attrs={
'placeholder': 'Email',
'required': True})
self.fields['message'].widget = forms.Textarea(attrs={
'placeholder': 'Message',
'rows': 6,
'required': True})
)。
请注意,这是一个玩具示例,但我的实际数据帧非常大。
答案 0 :(得分:0)
library(dplyr)
mySpecies= c("setosa", "loczyi", "virginica")
filter(iris, Species %in% mySpecies) %>%
group_by(iris, Species) %>%
summarise(mean_width = mean(Sepal.Width),
mean_length = mean(Sepal.Length))
答案 1 :(得分:0)
你走了。首先,将你的字符串分成单独的物种;然后为每个组:过滤匹配的行,并计算平均值。
mySpecies %>%
group_by(Species) %>%
do({
spec <- strsplit(as.character(.$Species), " ", fixed=TRUE)[[1]]
filter(iris, Species %in% spec) %>%
summarise_each(funs(mean), Sepal.Length, Sepal.Width)
})